문제

PHP에서 더 많은 메모리를 가져오는 데 문제가 있습니다.

오류 메시지는 다음과 같습니다.

Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 82 bytes) in ...

아직:

php.ini 파일의 memory_limit를 32M으로 설정했습니다.

memory_limit = 32M;

또한 실제 스크립트에서 수동으로 재정의하려고 시도했습니다.

ini_set('memory_limit', '32M');

그리고 -- 여기서 제가 길을 잃었습니다 -- phpinfo()를 통해 이 php.ini 파일이 실제 사용된 ini 파일이고 memory_limit가 올바르게 설정된 것 같다는 것을 확인했습니다.memory_limit 행은 다음을 제공합니다.

memory_limit    32M 32M

따라서 모든 것이 올바르게 구성된 것처럼 보이지만 20971520바이트(~20M)만 표시됩니다.

이 제한이 적용되는 위치를 알아보려면 또 어디를 찾아야 합니까?

편집하다: VPS의 Ubuntu 9.04에서 nginx/fastcgi에서 PHP를 실행하고 있습니다.php-cgi 프로세스는 약간 리소스가 부족한 것처럼 보이지만(RES=25m, VIRT=187m) 물리적 메모리는 10m, 스왑 공간은 500m입니다.

도움이 되었습니까?

해결책 2

방금 실행중인 코드를 지적했는데 누군가가 이것을 구성 파일로 하드 코딩했습니다.

ini_set('memory_limit', '20M');

내가하고있는 다른 모든 일을 무시하고있었습니다. 아휴.

다른 팁

나의 첫 번째 본능은 PHP가 다른 php.ini를 읽고 있다고 추측하는 것입니다.

Debian (및 대부분 Ubuntu)에서는 PHP (CLI, CGI 및 Apache)의 각 버전에는 자체 Php.ini 사본이 있습니다.

.htaccess 파일에서 설정을 시도해 볼 수 있는데, 그것이 하나의 서버에서 사이트가 작동하도록 하기 위해 내가 해야 했던 일이었습니다.

내가 사용한 설정은 다음과 같습니다.

php_value  upload_max_filesize  50M
php_value  post_max_size  60M
php_value  memory_limit  128M
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top