Dove memorizza il registro errori PHP? (php5, apache, fastcgi, cpanel)


392

Sono su hosting condiviso e ho Cpanel, Apache, PHP è gestito da FastCGI. Dove memorizza il registro errori PHP?

Esiste un altro modo per trovare il registro degli errori nell'ambiente di hosting condiviso invece di dover passare attraverso l'intera struttura del sito per cercare i file error_log?

Ho accesso al php.ini(sto usando PHP versione 5.2.16).


25
Su Linux, o /var/log/httpd/error_logo /var/log/apache2/error.log. Questi file sono di proprietà di root, quindi è necessario essere root o utilizzare sudoper vederlo o leggerlo.
Eric Leschinski,

112
php --info | grep error
sjas,

8
Per coloro che cercano una soluzione Windows, utilizzare php --info | findstr /r /c:"error_log"per vedere dove si trova il file di registro.
Boom,

1
È abbastanza strano per me ... Ho ospitato un sito Web e i log di PHP sono memorizzati nello stesso file dei log di Apache ... Nel mio pannello di amministrazione, nei log, c'è un'opzione per mostrare il log di errori completo di Apache, quando faccio clic su di esso, ci sono errori su utenti che entrano in luoghi dove non dovrebbero, per esempio. Ma anche nello stesso file ci sono errori mostrati da PHP.
RedClover

@soaku se usi fastcgi l'apache stesso non esegue PHP. quando usi mod_php che è il modulo apache, apache gestisce php. Ciò significa che gli errori possono e probabilmente si troveranno nei registri di Apache quando si utilizza mod_php, ma questo non sarà un caso quando si utilizza cgi o fastcgi
Gall Annonim,

Risposte:


314

PHP memorizza i log degli errori /var/log/apache2se PHP è un modulo apache2. Gli host condivisi spesso archiviano i file di registro nella /logsottocartella della directory principale . Ma ... se hai accesso a un php.inifile puoi farlo:

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

Secondo il commento di Rinogo : se si utilizza cPanel, il file di registro principale che probabilmente si sta cercando viene archiviato (per impostazione predefinita) in

/usr/local/apache/logs/error_log

Se tutto il resto fallisce, è possibile controllare la posizione del file di registro utilizzando

<?php phpinfo(); ?>

20
"Php memorizza i log degli errori in / var / log / apache2 se php è un apache2" non su RHEL ecc., Dove il nome del pacchetto è "httpd". Non si può davvero supporre che il nome di un pacchetto sia coerente tra le distribuzioni.
Chelmertz,

28
Cordiali saluti a googler - Se si utilizza cPanel, il file di registro principale che probabilmente si sta cercando viene archiviato (per impostazione predefinita) a/usr/local/apache/logs/error_log
rinogo

5
ma controlla la sezione "error_log" di <?php phpinfo(); ?>per confermare il percorso
doub1ejack

cosa succede se non è un modulo apache2. per esempio potrebbe essere un pacchetto fpm di debian in esecuzione su nginx.
n611x007,

2
dove lo mostrerà nella sezione phpinfo? in error_log tutto ciò che vedo per chiave / valore è 'error_log' e nessun percorso effettivo
Robert Sinclair,

86

Prova phpinfo()e controlla "error_log"


13
Dice solo error_log nessun percorso specificato. Immagino che forse sia in un ambiente di hosting condiviso e se avessimo accesso ad esso vedremmo tutti gli errori del sito.
PHPLOVER,

8
@PHPLOVER dice la stessa cosa se ci provi echo ini_get('error_log');?
Chelmertz,

non l'ho provato ma ha detto lo stesso nel file php.ini, quindi quello che ho fatto è stato cambiare il percorso nel file php.ini e controllare per vedere se funzionava e lo è. Registra ancora tutti gli errori anche se ho cambiato il percorso per registrare gli errori (fuori dalla radice del documento)? grazie phplover
PHPLOVER,

2
@PHPLOVER: puoi facilmente controllare il livello di segnalazione con l'impostazione error_reporting(E_ALL|E_STRICT);se.php.net/manual/en/function.error-reporting.php
chelmertz,

3
Anche il mio dice error_log, non ho idea di dove cercarlo. Questo colpisce nr uno su google ma non risponde.
HMR,

54

Linux

php --info | grep error 

Il terminale emetterà la posizione del registro degli errori.

finestre

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

Il prompt dei comandi mostrerà la posizione del registro degli errori

Per impostare la posizione del registro

Apri il tuo php.inie aggiungi la seguente riga:

error_log = /log/myCustomLog.log

Grazie @chelmertez , @Boom per questi (commenti sulla domanda).


5
sono su Linux. questo non menziona una posizione del registro per me.
Sirex,

1
@Sirex produce php -infoqualcosa? Devi assicurarti di phpchiamare PHP per l'esecuzione ...
Cullub

1
Inoltre, è possibile che php non stia registrando nulla. In tal caso, puoi aprire il tuo php.inie impostare error_reportingsu E_ALL & ~E_DEPRECATED & ~E_STRICT, o qualsiasi errore tu voglia vedere, quindi impostare error_logil percorso della directory in cui desideri che i tuoi errori vengano registrati. (Nota: questo non è un percorso completo per un file, ma solo per una directory.)
Cullub

1
Ho trovato solo vecchi registri in / var / log / httpd / dove la maggior parte delle persone consiglia di cercare, ma l'esecuzione php --info | grep logmi ha indirizzato verso / var / www / logs dove si trovavano i registri più recenti.
ChrisBob,

1
Una volta impostata la posizione del registro, non dimenticare di riavviare Apache:sudo /etc/init.d/apache2 restart
BrianHenryIE,

31

In un ambiente LAMP gli errori php sono indirizzati di default a questo file qui sotto.

/var/log/httpd/error_log

Tutti i log di accesso rientrano in:

/var/log/httpd/access_log

Quindi commentare la specifica del file di registro degli errori php e scriverà qui?
Utente

17

Come trovare il log degli errori PHP su Linux:

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

/var/log/httpd/error_log

Un altro modo equivalente:

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

/var/log/httpd/error_log

12

Sembra che per impostazione predefinita php non registra errori da nessuna parte, la error_logchiave in php.ini è commentata in tutte le installazioni che ho visto.

Generalmente io:

  1. cerca i file php.ini. locate php.ini.
  2. Cerca questi file per il error_reportingvalore;

    Che dovrebbe essere impostato su qualunque fusione dei livelli di registro php sia sufficiente per te. ,

    Per esempio: E_ALL & ~E_DEPRECATED & ~E_STRICT

  3. Controlla il error_logvalore per assicurarti che punti a un luogo reale e non sia commentato.

    Il valore predefinito non fornisce un percorso completo, solo un nome di file, non so dove questo percorso si risolva normalmente. Probabilmente /var/log/.


11

Dovresti usare il percorso assoluto quando imposti la variabile error_log nel tuo file php.ini, altrimenti i log degli errori verranno memorizzati in base al tuo percorso relativo.

error_log = /var/log/php.errors

Un'altra soluzione sarebbe scrivere semplici script che elenchino tutti i file dei log degli errori dall'albero delle directory.


10

Può anche essere /var/log/apache2/error.logse sei nel motore di calcolo di Google.

E puoi vedere la coda in questo modo:

tail -f /var/log/apache2/error.log

5

Se hai creato Apache e PHP dal sorgente, i log degli errori di default sono generati dal tuo ${Apache install dir}/logs/error_logie generalmente /usr/local/apache2/logs/error_log. Altrimenti, se lo hai installato dal repository, lo troverai su /var/log/apache2/error_log. Puoi anche impostare il percorso nel tuo php.inie verificarlo invocando phpinfo().


5

Il modo migliore è guardare nel tuo file httpd.conf e vedere quale è l'impostazione predefinita. Potrebbe anche essere sovrascritto dal tuo host virtuale specifico. Comincio guardando /etc/httpd/conf/httpd.confo /etc/apache2/httpd.confe cerco error_log. Potrebbe essere elencato come / var / log / httpd / error_log o /var/log/apache2/error_logma potrebbe anche essere elencato come semplicemente logs/error_log.

In questo caso è un percorso relativo, il che significa che sarà sotto /etc/httpd/logs/error_log. Se ancora non riesci a trovarlo, controlla la parte inferiore del tuo file httpd.conf e vedi dove sono inclusi i tuoi host virtuali. Potrebbe essere in /etc/httpd/conf.d/<- come "altro" o "extra". Il tuo host virtuale potrebbe sovrascriverlo quindi con ErrorLog "/ path / to / error_log".


4

Quando si configura il file di registro degli errori in php.ini, è possibile utilizzare un percorso assoluto o un percorso relativo. Un percorso relativo verrà risolto in base alla posizione dello script di generazione e otterrai un file di registro in ogni directory in cui sono presenti gli script. Se vuoi che tutti i tuoi messaggi di errore vadano nello stesso file, usa un percorso assoluto per il file.

Vedi di più qui: http://www.php.net/manual/en/ref.errorfunc.php#53025


Grazie, questo ha risolto il mio problema. Comportamento davvero scadente per le definizioni relative, avere file di registro sparsi in tutta la cartella htdocs e nessuna idea da dove iniziare a guardare. Mi sarei aspettato di essere relativo alla cartella di installazione, come altre impostazioni. +1.
Eduardo,

4

NGINX di solito lo memorizza in /var/log/nginx/error.log o access.log. (Su Ubuntu in ogni caso)


4
php --info | grep error

Questo è utile commentato da sjas sulla domanda. quindi l'ho incluso come risposta.


2
(Sembra) questo emette il valore per le impostazioni della riga di comando di PHP (es. /Etc/php/7.1/cli/php.ini) piuttosto che per le impostazioni di Apache.
BrianHenryIE,

3

Se si utilizza il registro php5-fpm, l'impostazione predefinita dovrebbe essere sotto

/var/log/php5-fpm.log

2

ovunque tu lo voglia, se lo imposti la tua funzione chiama: error_log ($ errorMessageforLog. "\ n", 4, 'somePath / SomeFileName.som');


2

Cerca il file httpd.conf ErrorLogeseguendolo cat <file location> | grep ErrorLogdalla riga di comando. Per esempio:

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

Produzione:

# 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"

Trova la riga che inizia con ErrorLoge c'è la tua risposta.

Nota: per gli host virtuali, è possibile modificare il file degli host virtuali httpd-vhosts.confper specificare una diversa posizione del file di registro.


2

I log degli errori di cPanel si trovano in:

/ Usr / local / cpanel / logs /

/ Usr / local / apache / logs /

Per impostazione predefinita, i log di Apche si trovano all'interno:

/ Var / log / apache

o

/ Var / log / apache2

Se qualcuno utilizza la posizione del registro personalizzata, è possibile verificarlo eseguendo questo comando:

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

Se ricevi l'errore che la directory apache2 non esiste, puoi eseguire questo comando per trovare la posizione corretta:

dov'è apache

o

dove è apache2


1
  1. puoi andare nella cartella dei registri di controllo di File Manager.
  2. selezionare il file di registro nella cartella public_html.
  3. controlla il file "php phpinfo ()" dove si trova il registro.

1

Sei in un ambiente di condivisione e non riesci a trovare il registro degli errori, controlla sempre se cPanel ha l'opzione Errori sulla dashboard di cPanel. Se non riesci a trovare il registro degli errori, puoi trovarlo lì.

Sulla barra di ricerca di cPanel, cerca Errore, mostrerà le Pagine di errore che sono fondamentalmente elenchi di diverse pagine di errore http e un altro Errore è dove vengono visualizzati i log degli errori.

Altri luoghi in cui cercare l'ambiente condiviso: / home / nomeutente / logs / home / nomeutente / public_html / error_log


1

qualcosa come questo :

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

o

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

o

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.