ปิดข้อผิดพลาดที่เลิกใช้งานใน PHP 5.3


127

เซิร์ฟเวอร์ของฉันใช้ PHP 5.3 และการติดตั้ง WordPress ของฉันทำให้เกิดข้อผิดพลาดเหล่านี้กับฉันทำให้ session_start () ของฉันพัง

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

สิ่งนี้น่ารำคาญ แต่ฉันไม่ต้องการปิดการรายงานข้อผิดพลาดบนหน้าจอ ฉันจะปิดการใช้งานคำเตือนที่เลิกใช้งานที่น่ารำคาญเหล่านี้ได้อย่างไร

ฉันใช้ WordPress 2.9.2


3.3.1 เวอร์ชันปัจจุบันของ wordpress ไม่ใช่หรือ
Shadur

ดูเหมือนว่าเขาจะชอบ php เก่ากับ wordpress แบบเก่า
Qchmqs

คำตอบ:


203

คุณสามารถทำได้ในรหัสโดยเรียกใช้ฟังก์ชันต่อไปนี้

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

หรือ

error_reporting(E_ALL ^ E_DEPRECATED);

ขอบคุณ Robus สิ่งนี้จะฆ่าการรายงานข้อผิดพลาด php ด้วยหรือไม่?
atwellpub

6
ไม่ใช่อันแรกบอกให้ php แสดงข้อผิดพลาด ERROR / WARNING / PARSE / NOTICE อันที่สองบอกให้ php แสดงข้อผิดพลาดทั้งหมดยกเว้นที่ถูกยกเลิก
Robus

1
การใช้ PHP 5.5.9 บน Ubuntu "error_reporting = E_ALL & ~ E_DEPRECATED & ~ E_STRICT" ไม่มีผล .... แต่ในตัวอย่างของฉัน "@mysql_connect ();" ทำเคล็ดลับ :-(
molokoloco

@molokoloco คุณทำผิดสองครั้ง ก่อนอื่นคุณไม่ได้แก้ไขอะไรเลย คุณแค่ปิดปากเงียบ mysqlประการที่2 คุณยังคงใช้ซึ่งเลิกใช้งานแล้ว อย่างน้อยคุณควรเปลี่ยนไปใช้mysqli
Marcin Orlowski

ไม่ทำงาน เขียนทับที่ไหนสักแห่งไหม คุณวางสิ่งนี้ไว้ที่ไหน?
Alex


21

หากต้องการรับเฉพาะข้อผิดพลาดที่ทำให้แอปพลิเคชันหยุดทำงานให้ใช้:

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

การดำเนินการนี้จะหยุดแสดงประกาศคำเตือนและข้อผิดพลาดที่เลิกใช้งาน


13

คำตอบก่อนหน้านี้ถูกต้องทั้งหมด เนื่องจากไม่มีใครบอกวิธีปิดข้อผิดพลาดทั้งหมดใน PHP ฉันจึงขอกล่าวถึงที่นี่:

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

อาจมีใครเห็นว่ามีประโยชน์ ...


11

ฉันเพิ่งประสบปัญหาคล้ายกันที่ปลั๊กอิน SEO ออกคำเตือนจำนวนมากทำให้บล็อกดิสก์ของฉันใช้งานเกินขีด จำกัด ของแผน

ฉันพบว่าคุณต้องรวมคำสั่ง error_reporting หลังจากที่ wp-settings.php ต้องการในไฟล์ wp-config.php:

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

การทำเช่นนี้จะไม่มีคำเตือนอีกต่อไปการแจ้งเตือนหรือบรรทัดที่เลิกใช้แล้วจะถูกผนวกเข้ากับไฟล์บันทึกข้อผิดพลาดของคุณ!

ทดสอบบน WordPress 3.8 แต่ฉันเดาว่าใช้ได้กับทุกการติดตั้ง


9

ในไฟล์ wp-config.php คุณสามารถค้นหาค่าคงที่ WP_DEBUG ตรวจสอบให้แน่ใจว่าตั้งค่าเป็นเท็จ

define('WP_DEBUG', false);

สำหรับ WordPress 3.x


7

คุณต้องแก้ไขไฟล์กำหนดค่า PHP ค้นหาบรรทัด

error_reporting = E_ALL

และแทนที่ด้วย:

error_reporting = E_ALL ^ E_DEPRECATED

หากคุณไม่สามารถเข้าถึงไฟล์การกำหนดค่าคุณสามารถเพิ่มบรรทัดนี้ในไฟล์ PHP WordPress (อาจเป็น headers.php):

error_reporting(E_ALL ^ E_DEPRECATED);

wp-config.phpมันเป็นเรื่องที่ดีมากที่จะเพิ่มนี้ มีวัตถุประสงค์เพื่อแก้ไขด้วยการตั้งค่าการกำหนดค่า
Nilpo

4

ฉันมักจะใช้วิธีนี้

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

ด้วยวิธีนี้ฉันจะไม่ปิดสิ่งที่ต้องการโดยไม่ได้ตั้งใจ


1
ทำให้คุณควบคุมได้น้อยลง คุณกำลังสมมติว่าสิ่งที่กำหนดไว้ถูกต้อง ควรตั้งค่าโดยตรงตามความจำเป็นเพื่อที่คุณจะได้ไม่ได้รับการกำหนดค่าที่ทับซ้อนกัน
Nilpo

เข้าใจ. ทุกกรณีมีความแตกต่างกัน
realtebo

1
อย่างไรก็ตามนี่เป็นคำตอบที่ดีที่สุด เป็นหนึ่งเดียวที่ตอบคำถามโดยตรง: ปิดใช้งาน E_DEPRECATED เท่านั้นโดยไม่มีผลข้างเคียงใด ๆ
Sygmoral

-2

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณเปลี่ยนเวอร์ชัน php ของคุณ: การระงับข้อความแสดงข้อผิดพลาดนี้ทำได้ง่ายมาก

หากต้องการระงับข้อความแสดงข้อผิดพลาดที่ถูกยกเลิกเพียงเพิ่มโค้ดด้านล่างลงในไฟล์ index.php ของคุณ:

init_set ( 'display_errors' เท็จ);


อย่าทำเช่นนั้นซึ่งจะซ่อนข้อความแสดงข้อผิดพลาดทั้งหมดไม่เพียง แต่สำหรับการเลิกใช้งานเท่านั้น
tanaydin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.