Abilitazione della visualizzazione degli errori in PHP solo tramite htaccess


113

Sto testando un sito web online.

Al momento, gli errori non vengono visualizzati (ma so che esistono).

Ho accesso solo al .htaccessfile.

Come faccio a visualizzare tutti gli errori utilizzando il mio .htaccessfile?


Ho aggiunto queste righe al mio .htaccessfile:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

E le pagine ora visualizzano:

Errore interno del server


ho cercato su Google, aggiunto alcune bandiere al mio htaccess; e le mie pagine non possono più essere visualizzate
Ogugua Belonwu

3
Sembra che tu non abbia i diritti per sovrascrivere queste impostazioni da htaccess. Potrebbe essere necessario impostare AllowOverride Allnella configurazione di Apache, se si ha accesso a quello.
kapa

Controlla il log degli errori di Apache. Dovrà esattamente il motivo per cui stai ricevendo l'errore interno 500. Quello che vedi nel browser è di progettazione inutile per scopi diagnostici.
Marc B

Risposte:


190

.htaccess:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log

14
ho aggiunto queste righe al mio htaccess: php_flag display_startup_errors su php_flag display_errors su php_flag html_errors su e le pagine mostrano errori interni del server
Ogugua Belonwu

4
Quando si utilizza PHP come modulo Apache, è anche possibile modificare le impostazioni di configurazione utilizzando le direttive nei file di configurazione di Apache (ad es. Httpd.conf) e nei file .htaccess. Avrai bisogno dei privilegi "AllowOverride Options" o "AllowOverride All" per farlo. php.net/manual/en/configuration.changes.php
silex

Crea il PHP_errors.log e rendilo 777 in un altro modo in cui probabilmente non vedrai il file creato da apache e riempito ... almeno dovevo crearlo.
PJunior

2
come ogugua ora ho anche un errore interno del server usando queste righe.
atterrato il

1
Se ottieni un 500 è probabilmente perché stai usando php-fpm, non mod_php.
mpchadwick

41
php_flag display_errors on

Per attivare la visualizzazione effettiva degli errori.

Per impostare i tipi di errori visualizzati, dovrai utilizzare:

php_value error_reporting <integer>

Combinato con i valori interi di questa pagina: http://php.net/manual/en/errorfunc.constants.php

Nota se usi -1 per il tuo numero intero, mostrerà tutti gli errori e sarà a prova di futuro quando aggiungeranno nuovi tipi di errori.


17

Mi sento di aggiungere ulteriori dettagli alla risposta esistente:

# PHP error handling for development servers
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /full/path/to/file/php_errors.log
php_value error_reporting -1
php_value log_errors_max_len 0

Autorizza 777 o 755 al file di registro e aggiungi il codice

<Files php_errors.log>
     Order allow,deny
     Deny from all
     Satisfy All
</Files>

alla fine di .htaccess. Questo proteggerà il tuo file di registro.

Queste opzioni sono adatte per un server di sviluppo. Per un server di produzione non dovresti mostrare alcun errore all'utente finale. Quindi cambia i flag del display su off .

Per ulteriori informazioni, segui questo collegamento: Gestione avanzata degli errori PHP tramite htaccess


1
che ne dici di dare chmod "0644" al file di registro degli errori? funzionerebbe ancora?
Andre Chenier,

2

Se desideri visualizzare solo errori irreversibili di runtime:

php_value display_errors on
php_value error_reporting 4

2

Questo funziona per me ( riferimento ):

# PHP error handling for production servers
# Disable display of startup errors
php_flag display_startup_errors off

# Disable display of all other errors
php_flag display_errors off

# Disable HTML markup of errors
php_flag html_errors off

# Enable logging of errors
php_flag log_errors on

# Disable ignoring of repeat errors
php_flag ignore_repeated_errors off

# Disable ignoring of unique source errors
php_flag ignore_repeated_source off

# Enable logging of PHP memory leaks
php_flag report_memleaks on

# Preserve most recent error via php_errormsg
php_flag track_errors on

# Disable formatting of error reference links
php_value docref_root 0

# Disable formatting of error reference links
php_value docref_ext 0

# Specify path to PHP error log
php_value error_log /home/path/public_html/domain/PHP_errors.log

# Specify recording of all PHP errors
# [see footnote 3] # php_value error_reporting 999999999
php_value error_reporting -1

# Disable max error string length
php_value log_errors_max_len 0

# Protect error log by preventing public access
<Files PHP_errors.log>
 Order allow,deny
 Deny from all
 Satisfy All
</Files>
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.