Bonjour à tous,
Je possède depuis peu un Kimsufi 2G, et j'ai besoin d'un petit coup de main sur la configuration des erreurs de PHP.
Il y a longtemps, je me souviens que lorsque je faisais un error_log('message à envoyer dans les logs \n salut'); en PHP, cela allait directement dans un fichier "php.log" bien à part des logs d'Apache. De plus, le php.log prenait bien en compte les \n et compagnie, du coup j'avais un affichage des logs parfait !
J'essaye de reproduire cette configuration, mais pour l'instant, tout ce que j'ai réussi à avoir, c'est que les erreurs soient envoyées dans l'error.log d'Apache :
[Tue Aug 07 09:42:25 2012] [error] [client ....] message \xc3\xa0 envoyer dans les logs\n salut
Et comme vous le voyez, c'est très mal affiché...
Voici ma config, j'espère que vous saurez me dire ce qui cloche :
/etc/php5/apache2/php.ini (que les lignes qui peuvent vous intéresser) :
error_reporting = E_ALL
display_errors = On
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
track_errors = Off
La directive error_log est commentée.
Ensuite, voici mon VirtualHost :
<VirtualHost *:80>
ServerName dev.test.fr
DocumentRoot /var/www/
ErrorLog ${APACHE_LOG_DIR}/dom/error.log
CustomLog ${APACHE_LOG_DIR}/dom/access.log combined
php_flag log_errors on
php_flag display_errors on
php_value error_reporting 30719
php_value error_log /var/log/apache2/dom/php_errors.log
#php_flag display_startup_errors off
#php_flag display_errors on
#php_flag html_errors off
#php_flag log_errors on
#php_value error_log /var/log/apache2/dom/php.log
#php_value error_reporting E_ALL
<Directory /var/www/>
DirectoryIndex index.php index.html
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Et lorsque je génère une erreur :
<?php
error_log("message à envoyer dans les logs\n salut");
?>
C'est le fichier error.log d'Apache qui prend l'erreur, et rien ne se passe dans le log de PHP, qui est vide d'ailleurs =/.
Error.log d'Apache :
[Tue Aug 07 09:56:31 2012] [error] [client ...] message \xc3\xa0 envoyer dans les logs\n salut
Pouvez-vous me dire ce qui coince ?
Merci d'avance
# Hey
Posté par Marotte ⛧ . Évalué à 3. Dernière modification le 07 août 2012 à 14:12.
http://php.net/manual/fr/function.error-log.php
Tu peux préciser le fichier en argument de error_log()
[^] # Re: Hey
Posté par Clement33 . Évalué à 2.
Effectivement, de cette façon ça marche bien, mais j'aurais aimé ne pas à le spécifier au moment du dev, mais directement via la config du serveur Web.
# Directive dans php.ini
Posté par Ymage . Évalué à 3.
Si vous n'aimez pas ce commentaire c'est qu'il est ironique.
[^] # Re: Directive dans php.ini
Posté par Clement33 . Évalué à 1.
Je viens juste de renseigner cette directive, en laissant celle que j'ai présentée plus haut, et là, ce simple code :
error_log("message à envoyer dans les logs\n salut");
Me log cela dans l'error_log spécifié par Apache, c'est à dire ${APACHE_LOG_DIR}/dom/error.log et pas php.log =/.
[^] # Re: Directive dans php.ini
Posté par Marotte ⛧ . Évalué à 3.
Il faut peut-être mettre log_errors à Off ? Sinon je ne vois pas…
[^] # Re: Directive dans php.ini
Posté par Clement33 . Évalué à 1.
Non, ça n'a rien changé :S.
Rien à faire, j'ai essayé plusieurs configurations, pas moyen de préciser simplement dans Apache ou PHP.ini comment rediriger les logs de PHP…
# Et avec des quotes ?
Posté par Chris K. . Évalué à 1.
En utilisant php_value error_log "/var/log/apache2/dom/php_errors.log" peut être ?
Chris.
[^] # Re: Et avec des quotes ?
Posté par Clement33 . Évalué à 1.
Non, ça ne change rien non plus…
[^] # Re: Et avec des quotes ?
Posté par Chris K. . Évalué à 1. Dernière modification le 07 août 2012 à 15:36.
Es tu sûr qu'il n'y a pas une directive ini_set qui prend le pas quelque-part dans le code ?
Tu peux facilement tester en changeant php_value par php_admin_value…
[^] # Re: Et avec des quotes ?
Posté par Clement33 . Évalué à 1. Dernière modification le 07 août 2012 à 15:40.
Oui j'en suis sûr, c'est un simple fichier error.php avec une seule ligne, celle qui est présentée au dessus…
Voilà ce que j'ai maintenant :
J'ai testé avec et sans quotes, et ça ne fonctionne toujours pas :S. Rien à faire =/.
[^] # Re: Et avec des quotes ?
Posté par Ymage . Évalué à 2.
As-tu vérifié avec phpinfo() que tes directives sont bien prises en compte après redémarrage du serveur Web ?
Si vous n'aimez pas ce commentaire c'est qu'il est ironique.
[^] # Re: Et avec des quotes ?
Posté par Ymage . Évalué à 2.
Et vérifie que le répertoire cible de ton fichier de log est bien accessible en écriture par ton serveur web qui fait tourner PHP
Si vous n'aimez pas ce commentaire c'est qu'il est ironique.
[^] # Re: Et avec des quotes ?
Posté par Clement33 . Évalué à 0. Dernière modification le 07 août 2012 à 16:03.
Je viens de vérifier via phpinfo, et dans la colonne LocalValue, c'est bien défini !
Pour ce qui est des droits, le log error d'Apache est dans le même dossier que celui de PHP, donc il a les droits, je viens de checker.
# Du neuf, mais ça ne marche toujours pas
Posté par Clement33 . Évalué à 0.
Bon, j'ai un peu de neuf, j'ai le serveur d'un ami qui log bien, mais qui ne fait pas de distinction entre le fichier d'error d'Apache et celui de PHP.
J'ai donc cela maintenant :
display_errors Off
error_log no value
log_errors On
Et dans le VirtualHost :
Il logue bien les erreurs, mais n'interprète toujours pas les "\n" :
Alors que sur le serveur de mon ami, il prend bien en compte les retours chariots… Là, je comprends pas ce que j'ai de différent…
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.