2010-01-29 15 views
8

ini_set()을 사용하여 php.ini에 구성된 값보다 메모리 제한을 늘릴 수 없습니다. 그러나 그 값을 그 이하의 값으로 설정하고 ini 파일에 정의 된 값보다 낮은 다른 값으로 늘릴 수 있습니다.ini_set()으로 memory_limit를 늘릴 수 없습니다

왜 이런 일이 일어나는 지 또는 어떻게 해결할 수 있는지 아는 사람이 있습니까?

+0

서버를 직접 실행합니까? 아니면 호스팅 된 계정이 있습니까? –

+4

memory_limit은 보호 된 설정이라고 생각합니다. 공유 서버에서 스크립트가 사용 가능한 모든 메모리를 사용할 수있게하는 것은 무의미합니다. 따라서 공유 서버를 사용하고 있다면 호스팅 회사에 문의하는 것이 좋습니다. 전용 서버에서는 php.ini에서 설정을 변경하는 것입니다. – zneak

+0

절도가 맞습니다. 당신은 ISP에게 당신 한도를 늘리라고 요청할 수 있습니다. – Ben

답변

12

설명서에 따르면 이상한 점은 어디에서나 메모리 제한을 설정할 수 있다는 것입니다.

  • 수호신을 설치 했습니까? Suhosin을 사용하면 전역 메모리 제한을 적용 할 수 있습니다.

  • .htaccess 어딘가에 php_value memory_limit xyz이라는 파일이 있습니까?

  • 쉘 포크 폭탄 보호가 활성화 되었습니까? 전역 메모리 제한을 부과 할 수 있습니다. 질문은 here을 참조하십시오. (이것이 Suhosin의 일부가 될 수 있다고 생각합니다).

  • phpinfo()는 "local"및 "global"memory_limit 값에 대해 무엇을 말합니까?

  • 어떻게 제한을 지정 하시겠습니까? 코드 스 니펫을 게시 할 수 있습니까?

+3

많은 감사합니다. 수호신 패치였습니다. 'suhosin.memory_limit'의 기본값은이 동작을 일으켰습니다 : http://www.hardened-php.net/suhosin/configuration.html#suhosin.memory_limit – soulmerge

1

"safe_mode"설정을 확인하십시오 - 활성화 된 경우 memory_limit를 올리지 못하도록 방지 할 수 있습니다 (단, 문서화되지 않았지만).

+0

'safe_mode'가 비활성화되었습니다. – soulmerge

0

공유 호스팅 계정의 메모리 제한을 무시할 수 없습니다. 간단합니다. 개인 (헌신적 인) 호스팅을 받고 제공자에게 모든 방법을 설정하도록 요청하십시오 (권장하지는 않지만).

+0

공유 호스팅 계정에서 가능하지 않은 이유는 로컬 컴퓨터에서는 대개 'safe_mode'가 활성화되어 있기 때문입니다. – soulmerge

관련 문제