scripts de ligne de commande PHP ne tiennent pas compte php.ini et ini_set ( 'memory_limit', ...) directives

StackOverflow https://stackoverflow.com/questions/1751719

Question

Je suis face à la commune « Erreur fatale: mémoire (alloué 30.408.704) (essayé d'allouer 24 octets) ... » PHP Erreur fatale. Pages via Apache sont desservis qui ne présentent pas ce comportement.

Je l'ai essayé ce qui suit:

  1. L'augmentation de la memory_limit dans php.ini à une valeur beaucoup plus grande.
  2. L'augmentation de memory_limit dans le script lui-même via des appels à ini_set('memory_limit', -1), ini_set('memory_limit', '-1'), ini_set('memory_limit', 100000000), ini_set('memory_limit', '128M'), etc.
  3. unset()ing tableaux et objets non nécessaires pour encourager le garbage collector pour libérer de la mémoire.
  4. Contacter l'hébergeur. Ils sont normalement très capables et bien informés, mais n'a pas été en mesure de me aider avec cette question soit.
  5. J'ai essayé explicitement d'inclure un fichier php.ini en utilisant le drapeau de ligne de commande -c pour sélectionner manuellement les fichiers php.ini spécifiques avec différentes valeurs.
  6. Je l'ai essayé memory_limit mise en php.ini en utilisant les deux chiffres bruts d'octets et des valeurs telles que 64M, 128M, etc.
  7. Le fournisseur d'hébergement a été en mesure d'exécuter le script en tant que root sans problème, mais éprouve le même problème que je fais lors de l'exécution à l'aide de mon utilisateur non root. Peut-être il y a une sorte de problème d'autorisations en cause?

Peu importe ce que j'essaie, le message d'erreur est le même. Il semble que mes scripts de ligne de commande ne tiennent pas compte des modifications à memory_limit.

J'ai tendance à essayer de faire en sorte que mes scripts sont la mémoire efficace, mais je suis actuellement besoin d'analyser de grandes quantités de HTML via DOMDocument à la place. Cela ne contribue pas non plus. En fait, l'erreur de dépassement de mémoire est maintenant déclenchée ailleurs dans le script.

Ma question: quelqu'un a rencontré ce ou un problème similaire? Avez-vous des recommandations?

Merci.

Était-ce utile?

La solution

Il se trouve que le problème a été causé par la protection de fork bomb coque étant activée sur le serveur qui met une limite de mémoire dur sur tous les scripts de ligne de commande. Cela avait été activé par mon hébergeur à mon insu.

Autres conseils

votre PHP sur cli peut utiliser un php.ini différent à votre php apache. essayez un phpinfo() et vérifiez son utilisation du fichier ini-vous que l'utiliser.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top