2016년 3월 13일 일요일

PHP Allowed memory size 에러

Fatal error: Allowed memory size of 134217728 bytes exhausted 에러 발생시 대응 방법

평소에는 별 문제 없다가 처리해야할 데이터가 쌓이면 생길 수 있는 에러이다.
물론 잘 못된 코딩으로도 문제가 생길 수도 있다.

우선 memory_limit 값이 얼마인지 확인을 해보자. 여러가지 방법이 있다.

1. /etc/php.ini 파일에서 확인
# cat /etc/php.ini | grep "memory_limit"
따로 설정을 건들지 않았다면 디폴트 값인 128M 로 나올 것이다.

2. ini_get 함수로 확인
echo ini_get('memory_limit');

3. phpinfo 함수에서 확인
phpinfo();
DirectiveLocal ValueMaster Value
.........
memory_limit512M128M

그리고 해당 PHP 실행시 사용되는 메모리량을 체크해보자.
echo memory_get_usage(); // 현재 메모리 사용량
echo memory_get_peak_usage(); // 피크 메모리 사용량
위의 코드를 소스에 넣어서 메모리 사용량을 확인

설정된 메모리 제한 값과 사용되는 메모리 사용량을 체크를 한 뒤에 적절하게 메모리 제한 설정을 바꾸면 된다.

▶ 소스에서 메모리 제한 설정
ini_set('memory_limit','256M');
위에서 체크한 메모리 사용량 보다 좀 더 많이 잡아주자.

▶ 소스에서 메모리 제한 해제
ini_set('memory_limit',-1);
메모리 제한을 풀어준다.

▶ php.ini 설정에서 메모리 제한 설정
memory_limit = 256M
php.ini 수정 후에는 아파치 재시작(service httpd restart)을 해주어야 한다.