Mengaktifkan tampilan kesalahan di PHP hanya melalui htaccess

113

Saya sedang menguji situs web secara online.

Saat ini, kesalahan tidak ditampilkan (tapi saya tahu itu ada).

Saya hanya memiliki akses ke .htaccessfile.

Bagaimana cara membuat semua kesalahan ditampilkan menggunakan .htaccessfile saya ?


Saya menambahkan baris ini ke .htaccessfile saya :

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

Dan halaman sekarang menampilkan:

Kesalahan server dari dalam

Ogugua Belonwu
sumber
saya telah melakukan beberapa googling, menambahkan beberapa flag ke htaccess saya; dan halaman saya tidak dapat ditampilkan lagi
Ogugua Belonwu
3
Sepertinya Anda tidak memiliki hak untuk mengganti pengaturan ini dari htaccess. Anda mungkin perlu mengatur AllowOverride Alldi konfigurasi Apache, jika Anda memiliki akses ke sana.
kapa
Periksa log kesalahan apache Anda. Itu harus alasan yang tepat mengapa Anda mendapatkan 500 kesalahan internal. Apa yang Anda lihat di browser dirancang tidak berguna untuk tujuan diagnostik.
Marc B

Jawaban:

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
silex.dll
sumber
14
saya menambahkan baris ini ke htaccess saya: php_flag display_startup_errors pada php_flag display_errors pada php_flag html_errors aktif dan halaman menunjukkan kesalahan server internal
Ogugua Belonwu
4
Saat menggunakan PHP sebagai modul Apache, Anda juga dapat mengubah pengaturan konfigurasi menggunakan arahan di file konfigurasi Apache (misalnya httpd.conf) dan file .htaccess. Anda akan membutuhkan hak istimewa "Opsi AllowOverride" atau "AllowOverride Semua" untuk melakukannya. php.net/manual/en/configuration.changes.php
silex
Buat PHP_errors.log dan 777 dengan cara lain Anda mungkin tidak akan melihat file yang dibuat oleh apache dan terisi ... setidaknya saya harus membuatnya.
PJunior
2
seperti ogugua Saya juga sekarang mengalami kesalahan server internal dengan menggunakan baris ini.
mendarat pada
1
Jika Anda mendapatkan 500, itu mungkin karena Anda menggunakan php-fpm, bukan mod_php.
mpchadwick
41
php_flag display_errors on

Untuk mengaktifkan tampilan kesalahan yang sebenarnya.

Untuk mengatur jenis kesalahan yang Anda tampilkan, Anda perlu menggunakan:

php_value error_reporting <integer>

Dikombinasikan dengan nilai integer dari halaman ini: http://php.net/manual/en/errorfunc.constants.php

Perhatikan jika Anda menggunakan -1 untuk bilangan bulat Anda, itu akan menampilkan semua kesalahan, dan menjadi bukti masa depan ketika mereka menambahkan jenis kesalahan baru.

UFTimmy
sumber
17

Saya ingin menambahkan lebih banyak detail ke jawaban yang ada:

# 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

Berikan izin 777 atau 755 ke file log dan kemudian tambahkan kodenya

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

di akhir .htaccess. Ini akan melindungi file log Anda.

Opsi ini cocok untuk server pengembangan. Untuk server produksi, Anda tidak boleh menampilkan kesalahan apa pun kepada pengguna akhir. Jadi ubah bendera tampilan menjadi mati .

Untuk informasi lebih lanjut, ikuti tautan ini: Penanganan Kesalahan PHP Tingkat Lanjut melalui htaccess

Ashish
sumber
1
bagaimana kalau memberikan chmod "0644" ke file log kesalahan? apakah itu akan tetap bekerja?
Andre Chenier
2

Jika Anda hanya ingin melihat kesalahan waktu proses yang fatal:

php_value display_errors on
php_value error_reporting 4
Zeke
sumber
2

Ini bekerja untuk saya ( referensi ):

# 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>
Darkcoder
sumber