Matikan kesalahan yang sudah usang dalam PHP 5.3

127

Server saya menjalankan PHP 5.3 dan instalasi WordPress saya meludahkan kesalahan ini pada saya, menyebabkan session_start () saya rusak.

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 647

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 662

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 669

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 676

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 712

Ini menjengkelkan, tetapi saya tidak ingin mematikan pelaporan kesalahan layar. Bagaimana cara menonaktifkan peringatan usang yang mengganggu ini?

Saya menjalankan WordPress 2.9.2.

atwellpub
sumber
Bukankah 3.3.1 versi terbaru dari wordpress?
Shadur
dia sepertinya menyukai php lama dengan wordpress lama
Qchmqs

Jawaban:

203

Anda dapat melakukannya dalam kode dengan memanggil fungsi-fungsi berikut.

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

atau

error_reporting(E_ALL ^ E_DEPRECATED);
Robus
sumber
Terima kasih Robus, Apakah ini akan membunuh pelaporan kesalahan php juga?
atwellpub
6
Tidak, yang pertama pada dasarnya memberitahu php untuk menunjukkan kesalahan ERROR / PERINGATAN / PARSE / PEMBERITAHUAN, yang kedua memberitahu php untuk menampilkan semua kecuali kesalahan TERHADAP.
Robus
1
Menggunakan PHP 5.5.9 di Ubuntu "error_reporting = E_ALL & ~ E_DEPRECATED & ~ E_STRICT" Tidak berpengaruh .... tetapi, dalam contoh saya, "@mysql_connect ();" lakukan triknya :-(
molokoloco
@ Molokoloco Anda salah melakukannya dua kali. Pertama, Anda tidak memperbaiki apa pun. Anda baru saja membungkamnya. Kedua, Anda masih menggunakan mysqlyang sudah usang. Anda setidaknya harus beralih kemysqli
Marcin Orlowski
Tidak bekerja Apakah ditimpa di suatu tempat? Di mana Anda meletakkan ini?
Alex
22

Saya perlu menyesuaikan ini

error_reporting = E_ALL & ~E_DEPRECATED
Simon H
sumber
21

Untuk hanya mendapatkan kesalahan yang menyebabkan aplikasi berhenti bekerja, gunakan:

error_reporting(E_ALL ^ (E_NOTICE | E_WARNING | E_DEPRECATED));

Ini akan berhenti menampilkan pemberitahuan, peringatan, dan kesalahan usang.

codefreak
sumber
13

Semua jawaban sebelumnya benar. Karena tidak ada yang memberi tahu cara mematikan semua kesalahan di PHP, saya ingin menyebutkannya di sini:

error_reporting(0); // Turn off warning, deprecated,
                    // notice everything except error

Seseorang mungkin menganggapnya berguna ...

sudip
sumber
11

Saya hanya menghadapi masalah yang sama di mana plugin SEO mengeluarkan sejumlah besar peringatan yang membuat penggunaan disk blog saya melebihi batas rencana.

Saya menemukan bahwa Anda harus menyertakan perintah error_reporting setelah wp-settings.php memerlukan dalam file wp-config.php:

   require_once( ABSPATH .'wp-settings.php' );
   error_reporting( E_ALL ^ ( E_NOTICE | E_WARNING | E_DEPRECATED ) );

dengan melakukan hal ini, tidak ada lagi peringatan, pemberitahuan, atau baris yang sudah usang ditambahkan ke file log kesalahan Anda!

Diuji di WordPress 3.8 tapi saya rasa itu berfungsi untuk setiap instalasi.

Camaleo
sumber
9

Dalam file wp-config.php Anda dapat menemukan WP_DEBUG konstan. Pastikan itu disetel ke false.

define('WP_DEBUG', false);

Ini untuk WordPress 3.x.

Audrius
sumber
7

Anda harus mengedit file konfigurasi PHP. Temukan garis

error_reporting = E_ALL

dan ganti dengan:

error_reporting = E_ALL ^ E_DEPRECATED

Jika Anda tidak memiliki akses ke file konfigurasi, Anda dapat menambahkan baris ini ke file PHP WordPress (mungkin headers.php):

error_reporting(E_ALL ^ E_DEPRECATED);
Kreker
sumber
Jauh lebih baik menambahkan ini wp-config.php. Ini dimaksudkan untuk diedit dengan pengaturan konfigurasi.
Nilpo
4

Saya cenderung menggunakan metode ini

$errorlevel=error_reporting();
$errorlevel=error_reporting($errorlevel & ~E_DEPRECATED);

Dengan cara ini saya tidak mematikan secara tidak sengaja sesuatu yang saya butuhkan

realtebo
sumber
1
Itu memberi Anda lebih sedikit kontrol. Anda berasumsi bahwa apa pun yang saat ini dikonfigurasi sudah benar. Lebih baik mengaturnya langsung sesuai kebutuhan sehingga Anda tidak mendapatkan konfigurasi yang tumpang tindih.
Nilpo
Memahami. Setiap kasus berbeda.
realtebo
1
Namun ini adalah jawaban terbaik. Ini adalah satu-satunya yang langsung menjawab pertanyaan: hanya menonaktifkan E_DEPRECATED, tanpa efek samping.
Sygmoral
-2

kesalahan ini terjadi ketika Anda mengubah versi php Anda: sangat mudah untuk menekan pesan kesalahan ini

Untuk menekan pesan DEPRECATED Error, cukup tambahkan kode di bawah ini ke file index.php Anda:

init_set ('display_errors', False);

dheerendra
sumber
jangan lakukan itu, yang menyembunyikan semua pesan kesalahan, tidak hanya untuk penyusutan.
tanaydin