Où PHP stocke-t-il le journal des erreurs? (php5, apache, fastcgi, cpanel)

392

Je suis sur l'hébergement mutualisé et ai Cpanel, Apache, PHP est géré par fastcgi. Où PHP stocke-t-il le journal des erreurs?

Existe-t-il un autre moyen de trouver le journal des erreurs sur l'environnement d'hébergement partagé au lieu d'avoir à parcourir toute la structure du site pour rechercher les fichiers error_log?

J'ai accès à php.ini(j'utilise PHP version 5.2.16).

PHPLOVER
la source
25
Sous Linux, soit /var/log/httpd/error_logou /var/log/apache2/error.log. Ces fichiers appartiennent à root, vous devez donc être root ou utiliser sudopour le voir ou le lire.
Eric Leschinski
112
php --info | grep error
sjas
8
Pour ceux qui recherchent une solution Windows, utilisez php --info | findstr /r /c:"error_log"pour voir où se trouve le fichier journal.
Boom
1
C'est assez bizarre pour moi ... J'ai hébergé un site Web et les journaux PHP sont stockés dans le même fichier que les journaux Apache ... Sur mon panneau d'administration, dans les journaux, il y a la possibilité d'afficher le journal des erreurs Apache complet, lorsque je clique dessus, il y a des erreurs sur les utilisateurs qui entrent dans des endroits où ils ne devraient pas, par exemple. Mais, aussi, dans le même fichier, il y a des erreurs que PHP a montrées.
RedClover
@soaku si vous utilisez fastcgi, apache lui-même n'exécute pas PHP. lorsque vous utilisez mod_php qui est un module apache, apache gère php. Cela signifie que les erreurs peuvent et seront probablement dans les journaux apache lors de l'utilisation de mod_php, mais ce ne sera pas le cas lors de l'utilisation de cgi ou fastcgi
Gall Annonim

Réponses:

315

PHP stocke les journaux d'erreurs /var/log/apache2si PHP est un module apache2. Les hôtes partagés stockent souvent des fichiers journaux dans votre /logsous-dossier du répertoire racine . Mais ... si vous avez accès à un php.inifichier, vous pouvez le faire:

error_log = /var/log/php-scripts.log

Selon le commentaire de rinogo : si vous utilisez cPanel, le fichier journal maître que vous recherchez probablement est stocké (par défaut) dans

/usr/local/apache/logs/error_log

Si tout le reste échoue, vous pouvez vérifier l'emplacement du fichier journal à l'aide de

<?php phpinfo(); ?>
Adam Arold
la source
20
"Php stocke les journaux d'erreurs dans / var / log / apache2 si php est un apache2" pas sur RHEL etc, où le nom du paquet est 'httpd'. On ne peut vraiment pas supposer que le nom d'un package est cohérent entre les distributions.
chelmertz
28
FYI to Googlers - Si vous utilisez cPanel, le fichier journal maître que vous recherchez probablement est stocké (par défaut) à/usr/local/apache/logs/error_log
rinogo
5
mais vérifiez la section 'error_log' de <?php phpinfo(); ?>pour confirmer le chemin
doub1ejack
si ce n'est pas un module apache2. par exemple, il peut s'agir d'un paquet fpm de debian fonctionnant sur nginx.
n611x007
2
où dans la section phpinfo le montrera-t-il? dans error_log tout ce que je vois pour la clé / valeur est 'error_log' et aucun chemin réel
Robert Sinclair
86

Essayez de phpinfo()vérifier "error_log"

chelmertz
la source
13
Il indique simplement error_log aucun chemin spécifié. Je suppose que c'est peut-être parce que c'est sur un environnement d'hébergement partagé et si nous y avions accès, nous verrions les erreurs du site de tout le monde.
PHPLOVER
8
@PHPLOVER dit-il la même chose si vous essayez echo ini_get('error_log');?
chelmertz
je n'ai pas essayé cela mais il a dit la même chose dans le fichier php.ini donc ce que j'ai fait a été de changer le chemin dans le fichier php.ini et vérifié pour voir si cela fonctionnait et c'est le cas. Consigne-t-il toujours toutes les erreurs bien que j'ai changé le chemin pour consigner les erreurs (en dehors de la racine du document)? merci phplover
PHPLOVER
2
@PHPLOVER: vous pouvez facilement contrôler le niveau de rapport avec le paramètre error_reporting(E_ALL|E_STRICT);se.php.net/manual/en/function.error-reporting.php
chelmertz
3
Le mien dit aussi error_log, aucune idée où le chercher. Cela n'apparaît pas sur google mais n'y répond pas.
HMR
54

Linux

php --info | grep error 

Le terminal affichera l'emplacement du journal des erreurs.

les fenêtres

php --info | findstr /r /c:"error_log"

L'invite de commande affichera l'emplacement du journal des erreurs

Pour définir l'emplacement du journal

Ouvrez votre php.iniet ajoutez la ligne suivante:

error_log = /log/myCustomLog.log

Merci @chelmertez , @Boom pour ces (commentaires sur la question).

Cullub
la source
5
im sur linux. cela ne mentionne pas un emplacement de journal pour moi.
Sirex
1
@Sirex php -infogénère quelque chose? Vous devez vous assurer d' phpappeler PHP pour exécuter ...
Cullub
1
De plus, il est possible que php n'enregistre actuellement rien. Si tel est le cas, vous pouvez ouvrir votre php.ini, et ensemble error_reportingà E_ALL & ~E_DEPRECATED & ~E_STRICT, ou quoi que les erreurs que vous voulez voir, puis définissez error_logle chemin vers le répertoire dans lequel vous voulez que vos erreurs journaliser. (Remarque: ce n'est pas un chemin complet vers un fichier, juste vers un répertoire.)
Cullub
1
Je n'ai trouvé que les anciens journaux dans / var / log / httpd / où la plupart des gens recommandent de regarder, mais l'exécution php --info | grep logm'a dirigé vers / var / www / logs où se trouvaient les journaux les plus récents.
ChrisBob
1
Une fois que vous avez défini l'emplacement du journal, n'oubliez pas de redémarrer Apache:sudo /etc/init.d/apache2 restart
BrianHenryIE
31

Dans un environnement LAMP, les erreurs php sont dirigées par défaut vers ce fichier ci-dessous.

/var/log/httpd/error_log

Tous les journaux d'accès sont regroupés sous:

/var/log/httpd/access_log
Allie
la source
Alors commentez la spécification du fichier journal des erreurs php et il va simplement écrire ici?
Utilisateur
17

Comment trouver votre journal d'erreurs PHP sous Linux:

eric@dev /var $ sudo updatedb
[sudo] password for eric:
eric@dev /var $ sudo locate error_log

/var/log/httpd/error_log

Une autre manière équivalente:

eric@dev /home/eric $ sudo find / -name "error_log" 2>/dev/null

/var/log/httpd/error_log
Eric Leschinski
la source
12

Il semble que par défaut php n'enregistre pas les erreurs n'importe où, la error_logclé de php.ini est commentée dans toutes les installations que j'ai vues.

En général, je:

  1. recherchez les fichiers php.ini. locate php.ini.
  2. Recherchez la error_reportingvaleur dans ces fichiers ;

    Qui devrait être réglé sur la fusion des niveaux de journal php qui vous suffit. ,

    Par exemple: E_ALL & ~E_DEPRECATED & ~E_STRICT

  3. Vérifiez la error_logvaleur pour vous assurer qu'elle pointe vers un lieu réel et n'est pas mise en commentaire.

    La valeur par défaut ne donne pas un chemin complet, seulement un nom de fichier, je ne sais pas où ce chemin se résout normalement. Probablement /var/log/.

ThorSummoner
la source
11

Vous devez utiliser le chemin absolu lors de la définition de la variable error_log dans votre fichier php.ini, sinon, les journaux d'erreurs seront stockés en fonction de votre chemin relatif.

error_log = /var/log/php.errors

Une autre solution consisterait à écrire un script simple qui répertorierait tous les fichiers journaux d'erreurs de l'arborescence de répertoires.

mailo
la source
10

Cela peut également être le /var/log/apache2/error.logcas si vous utilisez le moteur de calcul Google.

Et vous pouvez voir la queue comme ceci:

tail -f /var/log/apache2/error.log
Vivek
la source
5

Si vous avez construit Apache et PHP à partir des sources, alors les journaux d'erreurs par défaut sont générés sur votre ${Apache install dir}/logs/error_logie en général /usr/local/apache2/logs/error_log. Sinon, si vous l'avez installé à partir du référentiel, vous le trouverez à. /var/log/apache2/error_logVous pouvez définir le chemin dans votre php.iniaussi et le vérifier en l'appelant phpinfo().

Abhishek
la source
5

La meilleure façon est de regarder dans votre fichier httpd.conf et de voir quelle est la valeur par défaut. Il peut également être remplacé par votre hôte virtuel spécifique. Je commence par regarder /etc/httpd/conf/httpd.confou /etc/apache2/httpd.confet recherche error_log. Il peut être répertorié comme / var / log / httpd / error_log ou /var/log/apache2/error_logmais il peut également être répertorié simplement logs/error_log.

Dans ce cas, il s'agit d'un chemin relatif, ce qui signifie qu'il sera sous /etc/httpd/logs/error_log. Si vous ne le trouvez toujours pas, vérifiez le bas de votre fichier httpd.conf et voyez où vos hôtes virtuels sont inclus. Il peut être dans /etc/httpd/conf.d/<- comme "autre" ou "extra". Votre hôte virtuel pourrait alors le remplacer avec ErrorLog "/ path / to / error_log".

Thomas Bennett
la source
4

Lors de la configuration de votre fichier journal des erreurs dans php.ini, vous pouvez utiliser un chemin absolu ou un chemin relatif. Un chemin relatif sera résolu en fonction de l'emplacement du script de génération, et vous obtiendrez un fichier journal dans chaque répertoire dans lequel vous avez des scripts. Si vous voulez que tous vos messages d'erreur se dirigent vers le même fichier, utilisez un chemin absolu pour le fichier.

Voir plus ici: http://www.php.net/manual/en/ref.errorfunc.php#53025

anemone928
la source
Merci, cela a résolu mon problème. Comportement vraiment boiteux pour les définitions relatives, pour avoir des fichiers journaux répartis sur tout le dossier htdocs, et aucune idée par où commencer à regarder. Je me serais attendu à être relatif au dossier d'installation, comme d'autres paramètres. +1.
Eduardo
4

NGINX le stocke généralement dans /var/log/nginx/error.log ou access.log. (Sur Ubuntu en tout cas)

DarkNeuron
la source
4
php --info | grep error

C'est utile. commenté par sjas sur la question. donc je l'ai inclus comme réponse.

J4GD33P 51NGH
la source
2
(Il semble) cela génère la valeur des paramètres de ligne de commande PHP (par exemple /etc/php/7.1/cli/php.ini) plutôt que les paramètres Apache.
BrianHenryIE
3

Si vous utilisez php5-fpm, le journal par défaut doit être sous

/var/log/php5-fpm.log
mateusz.szymborski
la source
2

où vous le voulez, si vous le définissez votre appel de fonction: error_log ($ errorMessageforLog. "\ n", 4, 'somePath / SomeFileName.som');

cfphpflex
la source
2

Recherchez le fichier httpd.conf ErrorLogen exécutant cat <file location> | grep ErrorLogsur la ligne de commande. Par exemple:

$ cat /etc/apache2/httpd.conf | grep ErrorLog

Production:

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
ErrorLog "/private/var/log/apache2/error_log"

Trouvez la ligne qui commence ErrorLoget voici votre réponse.

Remarque: Pour les hôtes virtuels, vous pouvez modifier le fichier des hôtes virtuels httpd-vhosts.confpour spécifier un emplacement de fichier journal différent.

jkdev
la source
2

Les journaux des erreurs cPanel se trouvent dans:

/ usr / local / cpanel / logs /

/ usr / local / apache / logs /

Par défaut, les journaux Apche se trouvent à l'intérieur:

/ var / log / apache

ou

/ var / log / apache2

Si quelqu'un utilise un emplacement de journal personnalisé, vous pouvez le vérifier en exécutant cette commande:

cat / etc / apache2 / conf /httpd.conf | grep ErrorLog

Si vous obtenez une erreur indiquant que le répertoire apache2 n'existe pas, vous pouvez exécuter cette commande pour trouver l'emplacement correct en:

où est apache

ou

où est apache2

Dewlance
la source
1
  1. vous pouvez aller dans le dossier des journaux de vérification du Gestionnaire de fichiers.
  2. vérifiez le fichier journal dans le dossier public_html.
  3. vérifiez le fichier "php phpinfo ()" où se trouve le journal.
Mevil Bhojani
la source
1

Vous êtes sur un environnement de partage et ne pouvez pas trouver le journal des erreurs, vérifiez toujours si cPanel a l'option Erreurs sur votre tableau de bord cPanel. Si vous ne parvenez pas à trouver le journal des erreurs, vous pouvez le trouver ici.

Sur la barre de recherche de cPanel, recherchez Error, il affichera les pages d'erreur qui sont essentiellement des listes de différentes pages d'erreur http et d'autres erreurs où les journaux d'erreurs sont affichés.

Autres endroits où chercher sur un environnement partagé: / home / yourusername / logs / home / yourusername / public_html / error_log

Krishna Pariyar
la source
1

quelque chose comme ça :

sudo locate error.log | xargs -IX grep -iH "errorlog" X

ou

sudo locate error_log | xargs -IX grep -iH "errorlog" X

ou

sudo find / -iname "error?log" 2>/dev/null | xargs -IX grep -iH "errorlog" X
Homme libre
la source