web-dev-qa-db-fra.com

PHP: paramètres de limite de mémoire> 1024M ne fonctionne pas

Pour les mauvaises raisons, je dois définir des limites de mémoire supérieures à 1G pour un répertoire, mais sur mon serveur PHP 5.2.17 sur Lenny, lorsque je mets par exemple 2048M, je n'obtiens que la valeur par défaut de php.ini (256M).

PHP fonctionnant comme un module Apache, phpinfo nous le donne (pour le répertoire)

memory_limit    1024M   256M
suhosin.memory_limit    0   0

Existe-t-il une limitation due au module Apache ou à PHP conf? Je sais que le serveur n’a que 4 Go de RAM, c’est juste un script spécial.

52
Cédric Girard

Comment essayez-vous de définir la limite de mémoire? phpinfo () affiche la limite de mémoire réservée actuelle de PHP, c'est ce qui est disponible car php.ini a défini cette limite comme limite de mémoire.

Écrire ceci dans Apache .htaccess dans votre répertoire de script peut fonctionner, si votre serveur prend en charge la définition des commandes PHP par le biais de .htaccess:

php_value memory_limit 2048M

Dans la mesure où il est possible que les commandes .htaccess permettant de définir PHP valeurs _ soient désactivées. Ensuite, vous pouvez également essayer ceci à partir du code PHP:

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

Si cela ne fonctionne pas et .htaccess également, vous devez contacter les administrateurs du serveur.

103
kingmaple
ini_set("memory_limit",-1);

Cela devrait normalement supprimer les limites

28
pollux1er

J'ai eu le même problème où j'avais besoin de mon script PHP pour utiliser 4 Go de RAM. La raison n'a pas d'importance. L'objectif était de définir une limite de 4 Go en PHP.

L'idée de départ était d'utiliser ini_set('memory_limit', '4096M'); mais j'ai constaté que cela ne fonctionnait pas. Je ne sais pas du tout comment ou pourquoi être honnête, mais ce n'était pas important pour moi à l'époque. Je suis sur un système avec 32 Go de RAM, cela doit être possible.

J'ai trouvé que fixer une limite inférieure de 1 Mo à un travail réel était une solution qui fonctionnait pour moi.

ini_set('memory_limit', '4095M'); // 4 GBs minus 1 MB

Edit Nov '16: En fait, je n'ai jamais vraiment joué avec, mais j'ai remarqué sur mon système que cette valeur semble supprimer complètement toutes les limites de mémoire pour moi. Je peux utiliser autant de RAM que mon système en fournit éventuellement.

25
nxasdf

Comme décrit ici: http://www.hardened-php.net/suhosin/configuration.html#suhosin.memory_limit

Suhosin ne vous laissera pas définir une valeur supérieure à celle avec laquelle le script a commencé .

Si vous définissez le suhosin.memory_limit sur 2048M , vous serez alors capable d'augmenter votre utilisation de la mémoire.

6
Vincent Touzet