2009-12-30 3 views
6

보다 낮은 수의 오류가 발생하면 내 PHP 스크립트 중 하나가 php.ini 메모리 제한 또는 ini_set을 무시합니다.php CLI 스크립트가 memory_limit를 무시하고 어떤 이유로 든

print_r (ini_get_all) 할 때 내 스크립트가 치명적인 오류가 발생하면 전역 메모리 제한을 100M (및 그 문제에 대한 로컬)로 설정하면 보여줍니다 : 메모리가 부족합니다 (할당 된 24714304) (할당 된 571 바이트)

진단에 대한 도움말? 서버에는 8GB의 메모리가 있으며 전에이 스크립트를 실행하는 데 문제가 없었습니다.

디버깅에 대한 유용한 정보가 있습니까?

감사합니다.

답변

5

가장 일반적인 원인은 일반적으로 CLI PHP 바이너리가 예상보다 다른 php.ini 파일을 사용한다는 것입니다. 이는 user permissions 또는 PHP의 설치된 버전에 대해 단순히 다른 기본 php.ini 파일이 원인 일 수 있습니다. 그러나 조금 윤곽을 잡아서 스크립트 내에서 메모리 한도가 맞을 수도 있습니다.

그런 경우 운영 체제에서 부과되는 프로세스에 하드 메모리 제한이있을 수 있습니다.이 경우 부과 된 부분을 파악해야합니다.

this thread을 살펴 보시기 바랍니다. 그 포스터는 상황과 매우 유사합니다.

+0

당신이 맞을지도 모른다, 힘든 한도가 효과가 있을지도 모른다. 나는 그걸 발견하는 방법을 모른다. 어쩌면 내가 서버 결함에 물어볼 것입니다! – james

+0

당신은 영리한 사람입니다 나는 bash 메모리 제한에 관한 연구를했습니다 ulimit -v를 확인해보십시오. – james

+0

니스, 당신이 그것을 발견하게되어 기쁘다. – zombat

0

은 짧고 경우

ini_set('memory_limit', -1); 

달콤한 당신은 디버깅

+0

나는 그가 이미 그 시점을 지나고 있다고 생각한다. 그의 INI 설정은 이미 100M에 있습니다. –

+0

잘 했어.하지만 제대로 작동하지 않았다. 실제로 필자가 phpinfo()를 출력하면 훨씬 더 높은 메모리 제한이 표시되고 ini_get_all()을 출력하면 메모리 제한이 표시됩니다. – james

5

내 프로세스에 대한 가상 메모리 하드 제한되지되었다 (도 훨씬 낮은 번호)를 건너 뛰려. 내가 이런 짓을 bash 쉘에서

:

ulimit를 -v (memory_in_bytes, 아니 괄호)

이 내 문제를 해결했습니다. 하나님 내가 stackoverflow을 좋아한다

관련 문제