Pertanyaan Bagaimana cara menampilkan kesalahan tampilan PHP? (Saya telah menambahkan ini_set dan error_reporting, tetapi hanya memberikan 500 pada kesalahan)


Jadi, saya tidak benar-benar memiliki kesalahan di halaman web saya saat ini, tetapi saya ingin dapat melihat kesalahan saat muncul, bukan halaman kesalahan HTTP 500. Saya googling sekitar sedikit dan berpikir menambahkan dua baris ini akan memperbaiki semuanya.

ini_set('display_errors', 'On');
error_reporting(E_ALL);

CATATAN: Saya tidak memiliki akses ke file php.ini, karena saya menggunakan server akun sekolah saya.

Jadi saya memperkenalkan bug (tidak ada titik koma setelah $ buggy) seperti ini di bagian atas halaman saya:

<?php 
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$buggy

$x = 4 + 2;
...

Namun, saya hanya mendapatkan kesalahan Server:

"Situs web mengalami kesalahan saat mengambil http://mywebpage.com/. Ini mungkin karena pemeliharaan atau dikonfigurasi dengan tidak benar. "

Ada ide?

EDIT:

Saya telah mengkonfigurasi ulang kode saya:

<?php 
include_once 'database/errorSettings.php';
?>
<?php 

$buggy // whoops
$x = 4 + 2;
...

errorSettings.php adalah sebagai berikut:

<?php
    ini_set('display_errors', 'On');
    error_reporting(E_ALL);
?>

Tapi itu masih tidak berhasil ... cara yang salah untuk mengkonfigurasi ulang?


32
2018-04-10 05:30


asal


Jawaban:


Apa yang Anda miliki adalah kesalahan parse. Itu dibuang sebelum kode apa pun dijalankan. File PHP harus diuraikan secara keseluruhan sebelum kode apa pun di dalamnya dapat dijalankan. Jika ada kesalahan parse dalam file di mana Anda mengatur tingkat kesalahan Anda, mereka tidak akan berpengaruh pada saat kesalahan dilempar.

Entah memecah file Anda menjadi bagian yang lebih kecil, seperti mengatur tingkat kesalahan dalam satu file dan kemudian includeing file lain yang berisi kode aktual (dan kesalahan), atau atur tingkat kesalahan di luar PHP menggunakan php.ini atau .htaccess directives.


13
2018-04-10 05:37



Anda perlu mengatur nilai error_reporting dalam file .htaccess. Karena ada kesalahan parse, itu tidak pernah menjalankan fungsi error_reporting () di kode PHP Anda.

Coba ini di file .htaccess (dengan asumsi Anda dapat menggunakannya):

php_flag display_errors 1
php_value error_reporting 30719

Saya pikir 30719 sesuai dengan E_ALL tapi saya mungkin salah.

Edit Pembaruan:  http://php.net/manual/en/errorfunc.constants.php

int error_reporting ([ int $level ] )
---
32767   E_ALL (integer)     
All errors and warnings, as supported, except of   level E_STRICT prior to PHP 5.4.0.   32767 in PHP 5.4.x, 30719 in PHP 5.3.x, 6143 in PHP   5.2.x, 2047 previously

12
2018-04-10 05:34



Menambah apa yang dikatakan di atas. Ini adalah kesalahan parsing, sehingga untuk men-debug kesalahan parse, buat file baru di root bernama debugSyntax.php. Taruh ini di dalamnya:

<?php

///////    SYNTAX ERROR CHECK    ////////////
error_reporting(E_ALL);
ini_set('display_errors','On');

//replace "pageToTest.php" with the file path that you want to test. 
include('pageToTest.php'); 

?>

Jalankan halaman debugSyntax.php dan itu akan menampilkan kesalahan parse dari halaman yang Anda pilih untuk diuji.


5
2017-08-10 21:19



Cukup tulis kode berikut di atas file PHP:

ini_set('display_errors','on');

2
2018-01-03 08:28



Saya memiliki masalah ini ketika menggunakan PHP5.4 dan Plesk 11.5

Entah bagaimana, kesalahan pelaporan dan menampilkan pengaturan kesalahan di halaman konfigurasi domain Plesk benar-benar mengesampingkan pengaturan lokal di .htaccess atau skrip PHP. Saya belum menemukan cara untuk mencegah hal ini terjadi, jadi gunakan pengaturan Plesk untuk mengaktifkan dan menonaktifkan laporan kesalahan.

Anda mungkin memiliki pengaturan di php.ini yang mencegah situs lokal mengesampingkan pengaturan ini, yang mungkin diberlakukan oleh panel kontrol yang digunakan di server Anda.


0
2017-08-08 14:07



Untuk orang yang menggunakan Codeigniter (saya menggunakan C3):

File index.php menimpa konfigurasi php.ini, jadi pada file index.php, baris 68:

case 'development':
        error_reporting(-1);
        ini_set('display_errors', 1);
    break;

Anda dapat mengubah opsi ini untuk mengatur apa yang Anda butuhkan. Berikut daftar lengkapnya:

1   E_ERROR
2   E_WARNING
4   E_PARSE
8   E_NOTICE
16  E_CORE_ERROR
32  E_CORE_WARNING
64  E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024    E_USER_NOTICE
6143    E_ALL
2048    E_STRICT
4096    E_RECOVERABLE_ERROR

Semoga itu membantu.


0
2018-03-20 03:01



Kesalahan sintaks tidak diperiksa dengan mudah di server eksternal, hanya kesalahan waktu proses.

Apa yang saya lakukan? Sama seperti Anda, saya gunakan

ini_set('display_errors', 'On');
error_reporting(E_ALL);

Namun, sebelum menjalankan saya memeriksa kesalahan sintaks dalam file PHP menggunakan sintaks sintaks PHP online.

Yang terbaik, IMHO PHP Code Checker

Saya menyalin semua kode sumber, tempelkan di dalam kotak utama dan klik Analyze tombol.

Ini bukan metode yang paling praktis, tetapi 2 prosedur bersifat komplementer dan menyelesaikan masalah sepenuhnya


0
2018-02-10 00:07