Je travaillais auparavant
echo ini_get("memory_limit")."\n";
ini_set("memory_limit","256M");
echo ini_get("memory_limit")."\n";
Cela entrerait ceci:
32M
256M
sur un script php exécuté en ligne de commande. J'ai mis à jour de 5.2 à 5.3, et à partir de maintenant, cette directive ne fonctionne pas du tout: cela me donne:
32M
32M
et ensuite faire échouer mon script avec une erreur fatale ...
J'ai vérifié la documentation php, et l'ai googlé, et je n'ai trouvé nulle part que "memory_limit" soit devenu obsolète.
Quelqu'un a-t-il une solution?
Probablement que votre sushosin a mis à jour, ce qui a modifié la valeur par défaut de suhosin.memory_limit de 0 (ce qui ne permet aucune mise à jour de memory_limit).
Sous Debian, modifiez /etc/php5/conf.d/suhosin.ini
; suhosin.memory_limit = 0
à
suhosin.memory_limit = 2G
Ou quelle que soit la valeur avec laquelle vous êtes à l'aise. Vous pouvez trouver le changelog de Sushosin à l'adresse http://www.hardened-php.net/hphp/changelog.html , qui dit:
Modification de la manière dont la protection memory_limit est implémentée
Si l'extension suhosin est activée, elle peut empêcher les scripts de définir une limite de mémoire supérieure à celle définie au départ ou à une limite définie.
http://www.hardened-php.net/suhosin/configuration.html#suhosin.memory_limit
Voici une liste de choses à vérifier:
Suhosin est-il installé?
ini_set
ini_set('memory_limit', '512'); // DIDN'T WORK ini_set('memory_limit', '512MB'); // DIDN'T WORK ini_set('memory_limit', '512M'); // OK - 512MB ini_set('memory_limit', 512000000); // OK - 512MB
Lorsqu'un entier est utilisé, la valeur est mesurée en octets. La notation abrégée, telle que décrite dans ce FAQ , peut également être utilisée.
http://php.net/manual/en/ini.core.php#ini.memory-limit
Définit la valeur de la directive spécifiée. Cela ne peut pas être utilisé dans les fichiers .htaccess. Tout type de directive défini avec php_admin_value ne peut pas être remplacé par .htaccess ou ini_set (). Pour effacer une valeur précédemment définie, utilisez none comme valeur.
Cela fonctionne pour moi, n'a rien à voir avec PHP 5.3. Comme beaucoup d'autres, il ne peut pas être annulé via ini_set()
lorsque Safe_mode est activé. Vérifiez votre mise à jour php.ini
_ (et mieux encore: changez la mémoire_limite ici aussi).
Ubuntu 10.04 est fourni avec le correctif Suhosin uniquement, ce qui ne vous donne pas d’options de configuration. Mais vous pouvez installer php5-suhosin pour résoudre ceci:
apt-get update
apt-get install php5-suhosin
Maintenant, vous pouvez éditer /etc/php5/conf.d/suhosin.ini et définir:
suhosin.memory_limit = 1G
Ensuite, utiliser ini_set fonctionnera dans un script:
ini_set('memory_limit', '256M');