PHP 명령 줄 스크립트는 php.ini 및 ini_set ( 'memory_limit',…) 지침을 무시하고 있습니다.

StackOverflow https://stackoverflow.com/questions/1751719

문제

나는 "치명적인 오류 : 기억이 불가능한 (30408704 할당) (24 바이트를 할당하려고 시도) ..."PHP 치명적 오류에 직면하고 있습니다. Apache를 통해 제공되는 페이지는이 동작을 보여주지 않습니다.

다음을 시도했습니다.

  1. php.ini의 memory_limit을 훨씬 더 큰 값으로 증가시킵니다.
  2. 호출을 통해 스크립트 내에서 memory_limit 증가 ini_set('memory_limit', -1), ini_set('memory_limit', '-1'), ini_set('memory_limit', 100000000), ini_set('memory_limit', '128M'), 등.
  3. unset()쓰레기 수집가가 메모리를 자유롭게하도록 장려하기 위해 불필요한 배열과 물체.
  4. 웹 호스트에 문의하십시오. 그들은 일반적으로 매우 유능하고 지식이 풍부하지만이 문제를 도와 줄 수 없었습니다.
  5. 나는 php.ini 파일을 사용하여 명시 적으로 시도했습니다 -c 다양한 값을 가진 특정 php.ini 파일에 대한 명령 줄 플래그.
  6. 64m, 128m 등의 원시 수와 값을 모두 사용하여 php.ini에서 memory_limit을 설정하려고 시도했습니다.
  7. 호스팅 제공 업체는 문제없이 루트로 스크립트를 실행할 수 있었지만 뿌리가 아닌 사용자를 사용하여 실행할 때 동일한 문제를 경험합니다. 아마도 어떤 종류의 권한 문제가 관련되어 있습니까?

내가 시도한 것에 관계없이 오류 메시지는 동일합니다. 내 명령 줄 스크립트가 변경 사항을 무시하고있는 것으로 보입니다. memory_limit.

내 스크립트가 메모리 효율적인지 확인하려는 경향이 있지만 현재 많은 양의 HTML을 구문 분석해야합니다. 간단한 html dom 그리고 구문 분석기에서 메모리 문제가 발생하지 않습니다. 스크립트의 메모리 풋 프린트를 줄이기 위해 domdocument 대신에. 이것은 도움이되지 않습니다. 실제로, 메모리 외 오류는 이제 스크립트의 다른 곳에서 트리거됩니다.

내 질문 : 누군가가 이것이나 비슷한 문제를 경험 한 사람이 있습니까? 권장 사항이 있습니까?

고맙습니다.

도움이 되었습니까?

해결책

모든 명령 줄 스크립트에 단단한 메모리 제한을두고있는 서버에서 쉘 포크 폭탄 보호가 활성화되어 문제가 발생한 것으로 나타났습니다. 이것은 내 지식없이 내 웹 호스트에 의해 활성화되었습니다.

다른 팁

CLI의 PHP는 Apache PHP와 다른 php.ini를 사용하고있을 수 있습니다. 시도해보십시오 phpinfo() 그리고 사용하고 있다고 생각하는 INI 파일을 사용하여 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top