WP_DEBUG tidak disetel, tapi saya masih mendapatkan peringatan

14

Jika WP_DEBUG tidak disetel, seperti yang saya mengerti, Anda seharusnya tidak pernah melihat peringatan. Tetapi pada beberapa situs di beberapa server, saya masih melihat beberapa. Tidak semua peringatan yang akan ditampilkan jika WP_DEBUG disetel, tetapi beberapa pilihan.

Saya sudah mencoba mengubah tingkat kesalahan di php.ini, tetapi itu tampaknya tidak berpengaruh pada apakah peringatan muncul atau tidak, tetapi mereka muncul dalam jumlah yang berbeda di server yang berbeda (yaitu tidak ada peringatan pada pengembangan, satu peringatan pada pementasan, dan beberapa peringatan lagi tentang produksi).

tomdxw
sumber
Apakah ini benar-benar peringatan, atau kesalahan fatal?
TheDeadMedic
Saya memiliki masalah yang sama persis, itu PERINGATAN dari GravityForms dalam kasus saya output peringatan adalah - Peringatan: "lanjutkan" saklar penargetan setara dengan "istirahat". Apakah Anda bermaksud menggunakan "lanjutkan 2"? di /plugins/gravityforms/common.php - Jawaban Logic Digger di bawah ini berfungsi menyalin / menempelkan saya untuk memperbaiki percobaan pertama ini, terima kasih.
OG Sean

Jawaban:

7

WP_DEBUG tidak berdampak pada output kesalahan PHP. Selain pengaturan error_reporting, atur display_errors = 0 di file php.ini Anda. Ini diaktifkan secara default untuk pengembangan. Tetapi Anda akan menginginkannya di server produksi.

Dave Konopka
sumber
Mengutip wp-include / load.php: if (WP_DEBUG) error_reporting (E_ALL). Tapi sepertinya beberapa plugin mengutak-atik error_reporting dan display_errors padahal seharusnya tidak.
tomdxw
1
Ah - Anda benar, display_errors disetel ke Hidup di php.ini saya. Saya hanya berasumsi bahwa WP_DEBUG menangani semua kesalahan. Terima kasih.
tomdxw
21

Menggantikan

define('WP_DEBUG', false);

dengan ini:

ini_set('log_errors','On');

ini_set('display_errors','Off');

ini_set('error_reporting', E_ALL );

define('WP_DEBUG', false);

define('WP_DEBUG_LOG', true);

define('WP_DEBUG_DISPLAY', false);
Ram
sumber
4
Silakan tambahkan penjelasan untuk jawaban Anda.
fuxia
Mungkin kesalahan pada layar tidak aktif, tetapi Anda dapat melihatnya di server Anda di log kesalahan
user2060451
4

Mungkin juga, bahwa baris ini sudah disetel ke false. Jika demikian, Anda akan melihat kode berikut:

define('WP_DEBUG', false);

Dalam kedua kasus tersebut, Anda perlu mengganti baris ini dengan kode berikut:

ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);

Jangan lupa untuk menyimpan perubahan Anda dan mengunggah file wp-config.php Anda kembali ke server.

Penggali logika
sumber
1
Terima kasih ini berhasil menyembunyikan peringatan di ujung depan untuk saya. WP_DEBUG sudah disetel ke false.
OG Sean
1

Cobalah untuk menonaktifkan / menekan semua peringatan / pemberitahuan kesalahan di wp-config.php(atas) Anda. Bagaimanapun: Kesalahan bukanlah hal yang buruk. Mereka memberi Anda kesempatan untuk memperbaiki kode Anda.

kaisar
sumber
Saya pikir itu adalah plugin orang lain yang mengutak-atik error_reporting yang menyebabkan ini.
tomdxw
1

Untuk lingkungan WordPress, biasanya tidak ada alasan untuk digunakan ini_setkarena itulah yang sudah dicapai oleh konstanta yang ditentukan oleh WordPress Core. Cara kerja PHP adalah bahwa pengaturan tertentu dapat ditimpa dalam CMS (WordPress) Anda, dalam skrip individual, dan bahkan berdasarkan per-pengguna atau per-direktori (banyak yang membuat frustrasi host web dan agensi).

Untuk menonaktifkan kesalahan agar tidak ditampilkan pada halaman di WordPress, satu-satunya pengaturan yang benar-benar Anda butuhkan adalah:

define('WP_DEBUG', false);

... karena ketika WP_DEBUGdinonaktifkan, sub-opsi kemudian tidak aktif:

define('WP_DEBUG_DISPLAY', false);
define('WP_DEBUG_LOG', false);

Ingatlah bahwa WP_DEBUG_LOGopsi membingungkan hanya merujuk pada pembuatan debug.logdi dalam direktori wp-contentdan tidak mempengaruhi pengaturan logging lainnya, dll.

Sekali lagi, pengaturan di WordPress dapat mengesampingkan pengaturan PHP default, sehingga pengaturan PHP Anda tidak masalah sebanyak memiliki pengaturan yang benar dalam wp-config.phpfile Anda , yang dimuat sebelum komponen WP lainnya.

Yang mengatakan, itu adalah ide yang baik untuk menerapkan pengaturan default seperti di bawah ini dalam produksi:

error_reporting = E_ERROR | E_WARNING | E_PARSE
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /var/www/logs/error.log
log_errors_max_len = 1024
ignore_repeated_errors = On
ignore_repeated_source = Off
report_memleaks = On
xmlrpc_errors = 0
html_errors = Off

Untuk contoh lengkap, lihat file php.ini SlickStack kami yang dioptimalkan untuk Nginx dan PHP-FPM.

Dalam satu kasus, setelah berjam-jam penelitian, kami menyadari sebuah plugin (atau tema) menimpa berbagai pengaturan penanganan kesalahan yang sebelumnya ditetapkan dalam php.inidan wp-config.php. Satu-satunya cara untuk mencegah hal ini adalah dengan menghapus plugin atau tema WordPress yang mencoba "meretas" pengaturan PHP Anda, atau memberitahu mereka untuk menghapusnya karena itu adalah praktik yang sangat buruk bagi ekstensi untuk menimpa opsi debug CMS Anda.

Di SlickStack, kami membuat skrip Bash yang "menandai" setiap ini_setdan error_reportingbaris dari file PHP di /themes/dan /plugins/direktori dengan menyorot contoh tersebut menggunakan Plugin MU (skrip PHP) yang menampilkan daftar "peretasan" seperti itu di Dasbor Admin WP.

Jesse Nickles
sumber