J'ai un problème pour augmenter la limite de mémoire pour PHP en tant que module Apache.
Si je mets la directive suivante dans la configuration d'Apache, cela fonctionne correctement:
php_value memory_limit 1.99G
Mais plus de 2 Go ne fonctionnent pas, il faut restaurer cette valeur à 128 Mo.
Quel est le problème ici? J'ai besoin de plus de mémoire pour certaines tâches PDF.
Server est un SMP Debian 2.6.32-5-AMD64 # 1, PHP 5.3.3-7 + squeeze13 avec 12 Go de RAM physique.
Avez-vous essayé d'utiliser la valeur en Mo?
php_value memory_limit 2048M
Essayez également éditer cette valeur dans php.ini
pas Apache .
Je suggérerais que vous examiniez le problème sous un mauvais jour. La question devrait être 'Qu'est-ce que je fais qui nécessite de la mémoire 2G dans un processus Apache avec Php via un module Apache et cet ensemble d'outils est-il le mieux adapté au travail?'
Oui, vous pouvez attacher une fusée à un Ford Pinto, mais ce n'est probablement pas la bonne solution.
Quoi qu'il en soit, je vous fournirai la fusée si vous en avez vraiment besoin ... vous pouvez ajouter quelque chose en haut du script.
ini_set('memory_limit','2048M');
Cela le configurera uniquement pour le script. Vous aurez toujours besoin de dire à Apache de permettre autant pour un script php (je pense).
Pour une limite de mémoire illimitée, définissez -1
dans la variable memory_limit
:
ini_set('memory_limit', '-1');
Vous devez disposer d’un système d’exploitation 64 bits sur le matériel prenant en charge le système d’exploitation 64 bits, la version Apache 64 bits et la même chose pour PHP. Mais cela ne garantit pas que les fonctions qui fonctionnent avec PDF peuvent utiliser de telles tailles de mémoire. Vous feriez mieux de ne pas charger le fichier entier en mémoire, de le diviser en morceaux ou d'utiliser les fonctions de fichier pour le rechercher sans le charger dans la RAM.
Pour les autres personnes confrontées au même problème, voici la description du bogue dans php + patch https://bugs.php.net/bug.php?id=44522
Saisissez les éléments suivants dans votre configuration Apache:
php_value memory_limit 2048M
Vous pouvez aussi essayer ceci:
ini_set("max_execution_time", "-1");
ini_set("memory_limit", "-1");
ignore_user_abort(true);
set_time_limit(0);