Saya telah memeriksa file PHP ini saya ( php.ini
) dan display_errors
sudah diatur dan juga pelaporan kesalahan E_ALL
. Saya telah memulai kembali server web Apache saya.
Saya bahkan telah meletakkan baris-baris ini di bagian atas skrip saya, dan bahkan tidak menangkap kesalahan parse sederhana. Sebagai contoh, saya mendeklarasikan variabel dengan a "$"
dan saya tidak menutup pernyataan ";"
. Tetapi semua skrip saya menampilkan halaman kosong pada kesalahan ini, tetapi saya ingin benar-benar melihat kesalahan dalam output browser saya.
error_reporting(E_ALL);
ini_set('display_errors', 1);
Apa yang tersisa untuk dilakukan?
$_REQUEST
parameter) dua baris ini akan bekerja sebagian besar waktu.Jawaban:
Ini selalu bekerja untuk saya:
Namun, ini tidak membuat PHP menampilkan kesalahan parse - satu-satunya cara untuk menunjukkan kesalahan itu adalah dengan memodifikasi php.ini Anda dengan baris ini:
(jika Anda tidak memiliki akses
php.ini
, maka memasukkan baris ini.htaccess
mungkin juga berfungsi):sumber
php_flag display_errors 1
untuk .htaccessE_ALL
tidak cukup untuk menampilkan semua kesalahan di PHP 5.3. "E_STRICT
menjadi bagian dariE_ALL
dalam 5.4.0" - Panduan PHP yang Anda perlukanE_ALL | E_STRICT
atau-1
dalam versi itu.Anda tidak dapat menangkap kesalahan parse ketika mengaktifkan output kesalahan saat runtime, karena mengurai file sebelum benar-benar mengeksekusi apa pun (dan karena mengalami kesalahan selama ini, ia tidak akan mengeksekusi apa pun). Anda harus mengubah konfigurasi server yang sebenarnya sehingga display_errors aktif dan tingkat error_reporting yang tepat digunakan. Jika Anda tidak memiliki akses ke php.ini, Anda mungkin dapat menggunakan .htaccess atau yang serupa, tergantung pada server.
Pertanyaan ini dapat memberikan info tambahan.
sumber
Di dalam php.ini Anda :
Kemudian restart server web Anda.
sumber
sudo service apache2 restart
sudo apachectl -k restart
.Loaded Configuration File
Untuk menampilkan semua kesalahan, Anda perlu:
1. Miliki baris-baris ini dalam skrip PHP yang Anda panggil dari browser (biasanya
index.php
):2. (a) Pastikan skrip ini tidak memiliki kesalahan sintaksis
-atau-
2. (b) Diatur
display_errors = On
dalamphp.ini
Kalau tidak, ia bahkan tidak bisa menjalankan 2 baris itu!
Anda dapat memeriksa kesalahan sintaksis dalam skrip Anda dengan menjalankan (pada baris perintah):
Jika Anda memasukkan skrip dari skrip PHP lain maka skrip tersebut akan menampilkan kesalahan sintaksis dalam skrip yang disertakan . Sebagai contoh:
index.php
my_script.php
sumber
Beberapa penyedia hosting web memungkinkan Anda untuk mengubah parameter PHP dalam
.htaccess
file.Anda dapat menambahkan baris berikut:
Saya memiliki masalah yang sama dengan Anda dan solusi ini memperbaikinya.
sumber
Anda mungkin menemukan semua pengaturan untuk "pelaporan kesalahan" atau "kesalahan tampilan" tampaknya tidak berfungsi di PHP 7. Itu karena penanganan kesalahan telah berubah. Coba ini sebagai gantinya:
Atau, untuk menangkap pengecualian dan kesalahan sekaligus (ini tidak kompatibel dengan PHP 5):
sumber
try{} catch() {}
kode di mana-mana dalam kode php yang sudah Anda tentukan, saya bahkan tidak ingin memikirkan kekacauan yang akan terjadi ..$bt = debug_backtrace(); print_r($bt);
.Error
. Jika Anda menulis ulang semua permintaan (kecuali mungkin JavaScript, CSS, Gambar, dll.) Ke file index.php, maka coba blok catch di sana, itu membuatnya lebih mudah. Ya, sistem apa pun yang tidak memiliki titik masuk tunggal akan menjadi sakit kepala utama untuk diperbarui.Ini akan berhasil:
sumber
Menggunakan:
Ini adalah cara terbaik untuk menulisnya, tetapi kesalahan sintaks memberikan output kosong, jadi gunakan konsol untuk memeriksa kesalahan sintaks. Cara terbaik untuk men-debug kode PHP adalah dengan menggunakan konsol; jalankan yang berikut ini:
sumber
Setel ini di file index.php Anda :
sumber
Buat file bernama php.ini di folder tempat file PHP Anda berada.
Di dalam php.ini tambahkan kode berikut (Saya memberikan kode kesalahan sederhana):
sumber
Berikut ini skrip PHP:
Untuk penjelasan lebih rinci tentang kesalahan PHP, kunjungi Kesalahan PHP - error_reporting () .
sumber
Jika, meskipun mengikuti semua jawaban di atas (atau Anda tidak dapat mengedit file php.ini), Anda masih tidak bisa mendapatkan pesan kesalahan, coba buat file PHP baru yang memungkinkan pelaporan kesalahan dan kemudian sertakan file masalah. misalnya:
Meskipun semuanya telah diatur dengan benar di
php.ini
file saya , ini adalah satu-satunya cara saya bisa menangkap kesalahan namespace Skenario persis saya adalah:sumber
Saya biasanya pergi dengan kode berikut dalam proyek PHP biasa saya.
sumber
Saat menggunakan PHP sebagai modul Apache, kita dapat mengubah pengaturan konfigurasi menggunakan arahan dalam file konfigurasi Apache (mis. Httpd.conf) dan file .htaccess. Anda membutuhkan hak istimewa “AllowOverride Options” atau “AllowOverride All” untuk melakukannya.
Periksa ini
http://funbird.co.uk/blog/tech-articals/linux-tech-articals/enabling-error-display-php-via-htaccess
sumber
Jika Anda entah bagaimana menemukan diri Anda dalam situasi di mana Anda tidak dapat mengubah pengaturan melalui
php.ini
atau.htaccess
Anda kurang beruntung untuk menampilkan kesalahan ketika skrip PHP Anda mengandung kesalahan parse. Anda kemudian harus memutuskan untuk menyisir file pada baris perintah seperti ini:Jika host Anda begitu terkunci sehingga tidak memungkinkan untuk mengubah nilai melalui
php.ini
atau.htaccess
, itu juga dapat melarang mengubah nilai melaluiini_set
. Anda dapat memeriksanya dengan skrip PHP berikut:sumber
find . -name '*.php' -type f -exec php -l {} \; | grep -v 'No syntax errors detected'
lebih sederhanaKarena kami sekarang menjalankan PHP 7, jawaban yang diberikan di sini tidak benar lagi. Satu-satunya yang masih oke adalah yang dari Frank Forte , saat ia berbicara tentang PHP 7.
Di sisi lain, alih-alih mencoba menangkap kesalahan dengan mencoba / menangkap, Anda dapat menggunakan trik: gunakan sertakan.
Berikut tiga kode:
File: tst1.php
Menjalankan ini di PHP 7 tidak akan menunjukkan apa-apa.
Sekarang, coba ini:
File: tst2.php
File: tst3.php
Sekarang jalankan tst2 yang mengatur pelaporan kesalahan, dan kemudian sertakan tst3. Kamu akan lihat:
sumber
Anda dapat melakukan sesuatu seperti di bawah ini:
Setel parameter di bawah ini dalam file indeks utama Anda:
Kemudian berdasarkan kebutuhan Anda, Anda dapat memilih yang ingin Anda tampilkan:
Untuk semua kesalahan, peringatan dan pemberitahuan:
Untuk semua kesalahan:
Untuk semua peringatan:
Untuk semua pemberitahuan:
Untuk informasi lebih lanjut, periksa di sini .
sumber
index.html
?Anda dapat menambahkan penangan kesalahan khusus Anda sendiri, yang dapat memberikan informasi debug tambahan. Selanjutnya, Anda dapat mengaturnya untuk mengirimkan informasi kepada Anda melalui email.
sumber
Kode di atas ini berfungsi:
Namun, cobalah untuk mengedit kode pada ponsel di file:
sumber
Solusi terbaik / mudah / cepat yang dapat Anda gunakan jika itu adalah debugging cepat, adalah mengelilingi kode Anda dengan menangkap pengecualian. Itulah yang saya lakukan ketika saya ingin memeriksa sesuatu yang cepat dalam produksi.
sumber
catch (Throwable $e)
lebih baik ... Atau blok tangkap lain di bawahnyacatch(Error $e)
Tulis saja:
sumber
Itu yang saya pelajari. Dalam file PHP.INI,
sumber
Saat situs Anda tayang,
php.ini
file tersebut seharusnya menonaktifkan display_error untuk alasan keamanan. Namun, untuk lingkungan pengembangan, display_errors dapat diaktifkan untuk pemecahan masalah.sumber
Anda dapat melakukan ini dengan mengubah file php.ini dan menambahkan yang berikut ini
ATAU Anda juga dapat menggunakan kode berikut karena ini selalu berhasil untuk saya
sumber
Jika Anda telah menginstal Xdebug, Anda dapat menimpa setiap pengaturan dengan mengatur:
sumber
Anda mungkin ingin menggunakan kode ini:
sumber
Laporkan semua kesalahan kecuali E_NOTICE
Tampilkan semua kesalahan PHP
Matikan semua pelaporan kesalahan
sumber
Di Unix CLI , sangat praktis untuk mengarahkan hanya kesalahan ke file :
Kemudian dari shell lain, untuk perubahan langsung:
atau sederhana
sumber
./script
adalah skrip php CLI (hashbang#!/usr/bin/php
). Anda dapat mengarahkan kesalahan php dalam file dengan cara ini. Ini adalah unix piping. Ini bukan php sebagai CGI.Jika ada di baris perintah, Anda dapat menjalankan
php
dengan-ddisplay_errors=1
menimpa pengaturan diphp.ini
:sumber
Selain
php.ini
danini_set()
fungsi dalam skrip PHP, Anda dapat melakukan hal yang sama dengan.htaccess
danhttpd.conf
arahan yang ditunjukkan di bawah ini.Beberapa penyedia hosting memungkinkan pengaturan pengaturan PHP melalui
.htaccess
danhttpd.conf
.Sembunyikan kesalahan PHP
menemukan jawaban ini dengan googling sedikit
sumber