php.ini의 메모리 제한을 고려하지 않는 PHP CLI


4

drupal 웹 사이트를 관리하는 명령 줄 PHP 응용 프로그램 인 drush를 사용하고 있습니다. 많은 데이터를 가져 오는 명령을 실행 중이므로 PHP의 메모리 제한에 도달했습니다.

PHP Fatal error:  Allowed memory size of 536870912 bytes exhausted ...

수학을 올바르게 수행하면 512MB입니다 (536870912 / 1024 / 1024 = 512). drush가 사용하는 php.ini의 지시문을 변경했습니다.

$> drush status
  ...
  PHP configuration      :  /etc/php5/cli/php.ini 
$> grep memory /etc/php5/cli/php.ini 
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 1024M 

그러나 여전히 512MB 제한에 도달하고 있습니다! drush가 실행될 수 있도록 메모리 설정이 512에서 1025MB의 RAM으로 변경된 가상 컴퓨터에서 실행 중입니다.

$> free -m
             total       used       free     shared    buffers     cached
Mem:          1010        578        431          0         14        392
-/+ buffers/cache:        172        837
Swap:          382          0        382

그래서 그것은 약 431MB의 여유 공간이 있다고 말하면서 이제는 vm을 1024까지 올렸습니다. 메모리를 절반으로 사용하여 GUI를 실행하는 것 같지만 VM을 사용할 때 GUI가 어떻게 작동하는지 이해할 수 없습니다. 512MB의 램이있었습니다.

PHP cli가 여전히 512MB 메모리 제한에 도달하는 이유는 무엇입니까? 시스템 메모리 제한에 도달 한 경우 약 431MB 정도 죽지 않아야합니다.이 free명령 은 어떤 명령을 사용할 수 있습니까?


가상 메모리 제한과 실제 메모리 제한을 혼동하고 있습니다. PHP 메모리 제한은 가상 메모리 제한입니다. 출력 free은 모두 실제 메모리입니다. 또한 GUI를 실행하는 데 사용되는 메모리의 절반이 잘못되었습니다. 메모리는 주로 버퍼와 캐시에 사용됩니다. 시스템은 이미 충분한 여유 메모리를 가지고 있기 때문에 여유 공간을 확보하지 않아도되므로 노력이 낭비됩니다.
David Schwartz

1
아마도 하나 이상의 php.ini파일 을 가지고 있고 (같은 것을 확인하십시오 /etc/php5/cli) 잘못된 파일 을 편집 중이거나 파일에 ini_set('memory_limit', '512M');설정 settings.php이 포함되어 있습니다.
David Schwartz

@David-문제 해결 코드에서 코드베이스에 여분의 ini_set ()이 있습니다. 당신이 그 답변을 게시하면 나는 찬성하고 동의합니다.
13743

답변:


5

아마도 하나 이상의 php.ini 파일이 /etc/php5/cli있고 ( 같은 것을 확인하십시오 ) 잘못된 파일 을 편집 중이거나 파일에 ini_set('memory_limit', '512M');설정 settings.php이 포함되어 있습니다.


1

나처럼이 질문을하는 다른 사람들을 위해-이 명령을 실행하십시오 :

php --ini

php-cli가 사용중인 구성을 확인하십시오. 다음과 같은 것을 보게 될 것입니다 :

Loaded Configuration File:         /etc/php/7.1/cli/php.ini

또는 이렇게 :

Loaded Configuration File:         /opt/php-7.0.26/etc/php.ini

어쩌면 잘못된 파일에서 구성을 변경하려고했을 수 있습니다.


0

예를 들어 Mac에서

/ etc / php5 / cli는 명령 행용이므로 /etc/php5/cgi/php.ini를 변경해야합니다.

작동합니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.