PHP CLI de ne pas les erreurs du journal des
PHP ne sera pas le journal des erreurs produites à partir de la ligne de commande.
J'ai :
log_errors = On
error_log = /var/log/php_errors.log
dans /etc/php5/cli/php.ini
Ai-je raté une nouvelle configuration pour obtenir ce travail?
- pour moi, sur centos, à l'aide de php7.0 de rémi repo, la question a été avec
error_log = php_errors.log
dans la configuration.error_log = /var/log/php_errors.log
était la solution.
Vous devez vous connecter pour publier un commentaire.
Veuillez vérifier que le compte d'utilisateur qui exécute PHP CLI a accès en écriture à
/var/log/php_errors.log
.En outre, vous pouvez vérifier que vous utilisez le bon php.fichier ini comme ceci:
-a
, que j'ai laissée à partir de l'original post (maintenant corrigé).-a
. Mais si c'est d'utiliser le bon fichier de config, qui il est, et encore rien n'est écrit dans le journal, alors quoi?error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
php -a >> /var/log/php_errors.log 2>&1
. Sera que d'accomplir ce dont vous avez besoin?Cette question et de la réponse de fil a été très utile pour moi lors de la configuration de PHP CLI ouvrant une session sur un Ubuntu 12.04 environnement, donc je voulais poster une réponse qui distille ce que j'ai appris. En plus de la grande info fournie par
David Chan
ainsi queGeorge Cummins
j'ai créé unlogrotate.d
script pour s'assurer que le PHP CLI journal de l'erreur de ne pas grandir hors de contrôle, ainsi que de les configurer de sorte que plusieurs utilisateurs seront en mesure d'enregistrer les erreurs dans la commune de PHP CLI journal des erreurs.Tout d'abord, le comportement par défaut de PHP CLI est de connecter des messages d'erreur sur la sortie standard; l'enregistrement dans un fichier n'est pas le comportement par défaut. Ce qui signifie en général la journalisation pour la même ligne de commande de session terminal server qui exécute le PHP CLI de commande. Alors que le PHP ini fichier n'avons des chambres pour un certain
error_log
des hébergements supplémentaires doivent être faits pour vraiment faire le travail.Tout d'abord, j'ai dû créer un premier
php_errors.log
fichier:Depuis le serveur en question est utilisé par les développeurs web qui travaillent sur différents projets, j'ai de l'installation d'un groupe commun pour les appelé
www-users
. Et dans ce cas, je veux lephp_errors.log
pour être lisible et modifiable parwww-users
j'ai changer le propriétaire du fichier comme ceci:Puis modifier les autorisations du fichier à ceci:
Oui, à partir d'un point de vue sécurité d'avoir un fichier journal lisible et modifiable par n'importe qui dans
www-users
n'est pas si grande. Mais c'est contrôlée partagée de l'environnement de travail. J'ai donc la confiance des utilisateurs à l'égard des choses de ce genre. Et d'ailleurs, lorsque PHP est exécuté à partir de la CLI, tout utilisateur peut faire besoin d'accès en écriture dans les journaux de toute façon, même obtenir un journal écrit.Ensuite, allez dans
/etc/php5/cli/php.ini
pour ajuster la valeur par défaut d'Ubuntu 12.04 paramètres pour correspondre à ce nouveau fichier journal:Heureusement
log_errors
est activé par défaut dans Ubuntu 12.04:Mais pour permettre l'enregistrement dans un fichier, nous devons changer le
error_log
pour correspondre au nouveau fichier comme ceci:Installation d'un
logrotate.d
script.Maintenant ça doit être ça, mais depuis que je ne veux pas les journaux hors de contrôle je mis un
logrotate.d
pour laphp_errors.log
. Créez un fichier appeléphp-cli
dans/etc/logrotate.d/
comme ceci:Et placez le contenu de ce journal tourner script de démon là:
Test de la configuration.
Avec ce fait, nous allons tester l'installation à l'aide de
David Chan
s’astuce ci-dessus:Si exécuté correctement, vous devez juste être renvoyés à un vide invite de commande depuis PHP CLI erreurs ne sont plus envoyés sur la sortie standard. Afin de vérifier l'état de
php_errors.log
pour le test de message d'erreur comme ceci:Et il devrait être horodatée ligne d'erreur qui ressemble à quelque chose comme ceci:
comme un diagnostic, vous pouvez essayer de forcer une écriture dans le journal des erreurs de cette façon.
vous devriez maintenant voir l'essai 123 dans votre journal
L'enregistrement/déclaration comportement de PHP est la personne à charge sur la fonction error_reporting trop.
Certains frameworks PHP (par exemple CodeIgniter) exécuter une
error_reporting(E_STRICT)
déclaration ou l'équivalent, lorsque dans le mode de production, ce qui réduit considérablement le nombre/le journal des erreurs.Si vous souhaitez déboguer quelque chose, alors vous pouvez simplement mettre la déclaration suivante à droite avant votre code:
Si vous ne pouvez pas comprendre ce pourquoi ou peut-être ne disposez pas des autorisations utilisateur sur php.ini, une autre façon de déboguer une non-information d'erreur d'analyse est d'envelopper votre source en php dans une autre source en php avec le corps quelque chose comme:
dans le fichier PHP
dans le terminal
sortie
Vous foiré!