4 votes

PHP CLI ne respecte pas la limite de mémoire dans le php.ini

J'utilise drush, qui est une application php en ligne de commande pour gérer un site web Drupal. Je lance une commande pour importer beaucoup de données, ce qui me fait atteindre la limite de mémoire de php.

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

Ce qui fait 512MB si je fais le calcul correctement (536870912 / 1024 / 1024 = 512). J'ai changé la directive dans le php.ini que drush utilise :

$> 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 

Mais je me heurte toujours à la limite des 512 Mo ! Je fonctionne dans une machine virtuelle, dont j'ai modifié les paramètres de mémoire de 512 à 1025 Mo de RAM pour permettre à drush de fonctionner.

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

Il indique qu'il y a 431 Mo de libres, maintenant que j'ai fait passer le vm à 1024. Je suppose que la moitié de la mémoire est utilisée pour faire fonctionner l'interface graphique, mais je ne comprends pas comment l'interface graphique pouvait fonctionner correctement alors que le vm avait 512 Mo de RAM.

Pourquoi le clipper PHP se heurte-t-il toujours à la limite de 512 Mo de mémoire ? S'il se heurtait à la limite de la mémoire système, ne devrait-il pas mourir autour de 431 Mo, ce qui est le cas de l'interface utilisateur de PHP ? free dit qu'il est disponible ?

5voto

David Schwartz Points 60868

Il est fort probable que vous ayez plus d'un fichier php.ini (vérifiez quelque chose comme /etc/php5/cli ) et vous éditez la mauvaise ou vous avez une ini_set('memory_limit', '512M'); dans un settings.php ou un fichier similaire qui est inclus.

2voto

Ayman Safadi Points 8354

Pour les autres personnes qui googlent cette question comme moi - exécutez cette commande :

php --ini

Pour voir quelle configuration php-cli utilise. Vous verrez quelque chose comme ceci :

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

Ou comme ça :

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

Vous essayez peut-être de modifier la configuration dans un mauvais fichier.

0voto

therealjayvi Points 133

Sur Mac par exemple

/etc/php5/cli est pour la ligne de commande, donc vous devez modifier /etc/php5/cgi/php.ini

Ça devrait marcher !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X