web-dev-qa-db-fra.com

Erreur de mémoire insuffisante dans Symfony

Je travaille actuellement sur le projet Symfony (const VERSION = '2.5.10') et j'utilise xampp. La version PHP est 5.5.19.

Mon problème est que chaque fois que j'exécute mon environnement de développement, j'obtiens une erreur:

OutOfMemoryException: Error: Une taille de mémoire autorisée de 1073741824 octets est épuisée (tentative d'allocation d'octets 3358976) dans C:\xampp\htdocs\Editracker\vendor\symfony\src\Symfony\Component\HttpKernel\Profiler\FileProfilerStorage.php

et chaque fois que je rafraîchit la page, cela donne une taille de mémoire différente. Je pense aussi que c’est aussi la raison pour laquelle mon environnement de développement met peu de temps avant de rafraîchir la page.

Votre aide est appréciée. 

php.ini

memory_limit = '256M'

J'ai essayé d'augmenter ma limite de mémoire, mais il y a toujours une erreur à propos de la limite de mémoire

10
aiai

Le composant le plus attrayant de Symfony est un profileur. Si vous n'avez pas besoin de profileur dans certaines actions particulières, vous pouvez le désactiver via le code:

if ($this->container->has('profiler'))
{
    $this->container->get('profiler')->disable();
}

Vous pouvez également définir un paramètre global dans config:

framework:
    profiler:
        collect: false
17

Vous pouvez soit désactiver le profileur de symfony (je ne pense pas que c'est ce que vous voulez, à ma connaissance) ou définir la limite à illimité avec -1 dans votre php.ini et redémarrer Apache.

memory_limit = -1
4
BentCoder

J'ai résolu l'erreur de manque de mémoire sur le débogage Twig lors de l'installation du XDebug.

Comme Twig utilise la fonction PHP var_dump en interne, installer XDebug est une bonne idée, car il limite la sortie var_dump() des tableaux et objets à 3 niveaux, comme nous pouvons le constater sur la documentation .

Crédits à @peezi .

1
coderade

Si la limite de mémoire est uniquement atteinte dans l’environnement de développement Symfony, je suggérerais d’ajouter ce qui suit à web/app_dev.php

ini_set('memory_limit', '-1');

De cette façon, vous pouvez continuer à tester la production avec une quantité de mémoire raisonnable. La modification de l'ensemble de l'environnement via php.ini pourrait masquer une erreur en bout de ligne.

1
lookbadgers

Même tard dans la soirée, j'ai récemment eu des problèmes avec Out of Memory, juste pour accéder au fichier app.php avec Symfony 3.4. Il s'avère que lorsque SELinux est défini sur enforcing, même si vous définissez les autorisations du répertoire var à l'intérieur de votre projet sur 777, il ne pourra pas écrire dessus. Si vous suivez les étapes de la documentation officielle sur la procédure de déploiement en production, le code de réponse 500 sera renvoyé et le journal des erreurs du serveur Web ne sera écrit que si PHP a épuisé la limite de mémoire.

Je ne suis pas un expert de SELinux, mais la seule façon de résoudre ce problème a été de désactiver SELinux, mais l'édition /etc/selinux/config définit le fichier SELINUX=disabled et de redémarrer le système d'exploitation.

Là encore, il y a une raison pour que SELinux existe et une configuration appropriée ne peut pas être trouvée facilement à l'aide des sous-dossiers var de Symfony et peut être difficile à résoudre ce problème sans penser à désactiver SELinux. 

0
Fabiano