Bagaimana untuk mendapatkan mesej ralat yang berguna dalam PHP
P粉590929392
2023-08-20 14:30:17
<p>Banyak kali saya akan cuba menjalankan skrip PHP dan hanya akan mendapat skrin kosong. Tiada mesej ralat, hanya skrin kosong. Puncanya mungkin ralat sintaks mudah (tanda kurungan yang salah, titik bertitik hilang), atau panggilan fungsi yang gagal, atau sesuatu yang lain sepenuhnya. </p>
<p>Sukar untuk mengetahui apa yang berlaku. Saya akhirnya mengulas kod itu, menambah pernyataan "gema" di sana sini, dan lain-lain untuk cuba mengecilkan skop masalah. Tetapi mesti ada cara yang lebih baik, bukan? </p>
<p>Adakah terdapat cara untuk menjadikan PHP menjana mesej ralat yang berguna seperti Java? </p>
Kod berikut membolehkan semua ralat:
Boleh juga rujuk pautan berikut:
Tunjukkan ralat dimatikan secara lalai kerana anda tidak mahu "pelanggan" melihat mesej ralat.
Sila lihat halaman ini dalam dokumentasi PHP untuk mendapatkan maklumat tentang dua arahan:
error_reporting
和display_errors
。您可能想更改的是display_errors
.Jadi anda ada 3 pilihan:
(1) Anda boleh menyemak fail log ralat kerana ia akan mengandungi semua ralat (melainkan pengelogan dilumpuhkan). Untuk mendayakan pengelogan ralat, pastikan
log_errors
配置指令设置为On
. Log juga membantu apabila ralat tidak disebabkan oleh PHP tetapi oleh pelayan web.(2) Anda boleh menambah 2 baris kod berikut untuk membantu anda menyahpepijat ralat bukan sintaks yang berlaku dalam fail yang sama:
Perhatikan bahawa pada pelayan pengeluaran, yang terakhir harus ditetapkan kepada
Off
(tetapi hanya yang terakhir, kerana anda masih perlu mengetahui dari fail log semua ralat yang berlaku).Namun, untuk ralat sintaks yang berlaku dalam fail yang sama, arahan di atas tidak akan berfungsi dan anda perlu mendayakannya dalam php.ini. Jika anda tidak boleh mengubah suai fail php.ini, anda juga boleh cuba menambah baris berikut pada fail .htaccess anda, walaupun ini jarang disokong sekarang:
(3) Pilihan lain ialah menggunakan editor yang menyemak ralat semasa anda menaip, seperti PhpEd, VSCode atau PHPStorm. Mereka semua datang dengan penyahpepijat yang memberikan maklumat yang lebih terperinci. (Penyahpepijat PhpEd sangat serupa dengan xdebug dan disepadukan terus ke dalam editor, jadi anda boleh melakukan semuanya dengan satu program.)