La méthode PHP error_log n'écrit pas les erreurs dans le fichier journal des erreurs personnalisé. Il n'écrira que dans /var/log/Apache2/php_error.log
Voici les paramètres de journalisation dans mon php.ini
:
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
display_errors = Off
log_errors = On
log_errors_max_len = 0 ; also tried with 9999999
error_log = /var/log/Apache2/php_errors.log
PHP écrit ses erreurs dans le journal des erreurs Apache habituel (/var/log/Apache2/error.log
) plutôt que dans celui que j'ai spécifié ci-dessus.
Choses que j'ai déjà essayées:
/var/log/Apache2/php_errors.log
correspond à 777 autorisations et le fichier existe.(Pour info: j'utilise Apache/2.2.17 et PHP/5.3.5-1ubuntu7.2 sur Ubuntu 11.04)
Qu'est-ce que je fais mal?
J'aimerais répondre à cette question car le résultat est élevé sur Google, même si c'est une vieille question.
J'ai résolu ce problème en ajoutant des autorisations en écriture pour tous les utilisateurs du répertoire des journaux.
Dans mon cas, l'utilisateur 'http' devait pouvoir écrire dans/var/log/httpd/donc j'ai couru
# chmod a+w /var/log/httpd
Si le fichier existe déjà, il peut être utile de le supprimer en premier et de permettre à Apache de le créer.
Mon fichier php.ini incluait aussi le chemin complet.
error_log = /var/log/httpd/php_errors.log
Vous pouvez essayer de spécifier le nom du fichier comme ceci:
J'utilise Apache 2.2.22 sur Ubuntu.
Utilisez cette commande PHP:
error_log("eric", 3, "/home/el/error.log");
Le premier paramètre est le message à envoyer au journal des erreurs. Le second paramètre 3
signifie "attend une destination de nom de fichier. Le troisième paramètre est la destination.
Créez le fichier /home/el/error.log et définissez son propriétaire sur ceci:
el@apollo:~$ ll error.log
-rwxrwxr-x 1 www-data www-data 7 Dec 13 14:30 error.log
Lorsque PHP interprète la méthode error_log, il ajoute le message à votre fichier.
supprimer php_errors.log et redémarrer Apache2, le serveur lui-même créera un nouveau fichier php_errors.log avec les autorisations et le propriétaire appropriés.
rm -f /var/log/Apache2/php_errors.log
service Apache2 restart
ll /var/log/Apache2/php_errors.log
Vous pouvez définir le fichier journal des erreurs pour un site dans le fichier de configuration du site VirtualHost, par exemple: /etc/Apache2/sites-enabled/example.com.conf
:
<VirtualHost *:80>
....
ErrorLog ${Apache_LOG_DIR}/www.example.com-error.log
LogLevel warn
CustomLog ${Apache_LOG_DIR}/www.example.com-access.log combined
</VirtualHost>
Dans le système unix, ${Apache_LOG_DIR}
est généralement /var/log/Apache2
Les erreurs et les accès seront enregistrés dans ${Apache_LOG_DIR}/www.example.com-error.log
et ${Apache_LOG_DIR}/www.example.com-access.log
.