Tắt các lỗi không dùng nữa trong PHP 5.3


127

Máy chủ của tôi đang chạy PHP 5.3 và cài đặt WordPress của tôi đang phát sinh những lỗi này, khiến session_start () của tôi bị hỏng.

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

Điều này gây phiền nhiễu, nhưng tôi không muốn tắt báo cáo lỗi màn hình. Làm thế nào để tôi vô hiệu hóa những cảnh báo phản đối khó chịu này?

Tôi đang chạy WordPress 2.9.2.


Có phải 3.3.1 là phiên bản cập nhật hiện tại của wordpress không?
Shadur

anh ấy có vẻ thích một php cũ với wordpress cũ
Qchmqs

Câu trả lời:


203

Bạn có thể làm điều đó bằng mã bằng cách gọi các hàm sau.

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

hoặc là

error_reporting(E_ALL ^ E_DEPRECATED);

Cảm ơn Robus, điều này sẽ giết bất kỳ báo cáo lỗi php nào?
atwellpub

6
Không, cái đầu tiên về cơ bản bảo php hiển thị các lỗi LRI / CẢNH BÁO / PARSE / THÔNG BÁO, cái thứ hai bảo php hiển thị tất cả trừ các lỗi ĐỔI.
Robus

1
Sử dụng PHP 5.5.9 trên Ubuntu "error_Vporting = E_ALL & ~ E_DEPRECATED & ~ E_STRICT" Không có tác dụng .... nhưng, trong ví dụ của tôi, "@mysql_connect ();" thực hiện mẹo :-(
molokoloco

@molokoloco bạn đã làm sai hai lần. Đầu tiên bạn không sửa một thứ. Bạn chỉ im lặng thôi. Thứ 2, bạn vẫn đang sử dụng mysqlmà không được dùng nữa. Ít nhất bạn nên chuyển sangmysqli
Marcin Orleansowski

Không hoạt động. Nó được ghi đè ở đâu đó? Nơi nào bạn đặt điều này?
Alex

22

Tôi cần phải thích nghi với

error_reporting = E_ALL & ~E_DEPRECATED

21

Để chỉ nhận những lỗi khiến ứng dụng ngừng hoạt động, hãy sử dụng:

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

Điều này sẽ ngừng hiển thị các thông báo, cảnh báo và lỗi không dùng nữa.


13

Tất cả các câu trả lời trước là chính xác. Vì không ai gợi ý cách tắt tất cả các lỗi trong PHP, tôi muốn đề cập đến nó ở đây:

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

Ai đó có thể thấy nó hữu ích ...


11

Tôi vừa gặp phải một vấn đề tương tự khi một plugin SEO đưa ra một số lượng lớn cảnh báo khiến việc sử dụng đĩa blog của tôi vượt quá giới hạn kế hoạch.

Tôi phát hiện ra rằng bạn phải bao gồm lệnh error_Vporting sau khi wp-settings.php yêu cầu trong tệp wp-config.php:

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

bằng cách này, không còn cảnh báo nào nữa, các thông báo cũng như các dòng không dùng nữa được thêm vào tệp nhật ký lỗi của bạn!

Đã thử nghiệm trên WordPress 3.8 nhưng tôi đoán nó hoạt động cho mọi cài đặt.


9

Trong tệp wp-config.php, bạn có thể tìm thấy WP_DEBUG không đổi. Hãy chắc chắn rằng nó được đặt thành false.

define('WP_DEBUG', false);

Cái này dành cho WordPress 3.x.


7

Bạn phải chỉnh sửa tập tin cấu hình PHP. Tìm dòng

error_reporting = E_ALL

và thay thế nó bằng:

error_reporting = E_ALL ^ E_DEPRECATED

Nếu bạn không có quyền truy cập vào tệp cấu hình, bạn có thể thêm dòng này vào tệp WordPress WordPress (có thể là headers.php):

error_reporting(E_ALL ^ E_DEPRECATED);

Tốt hơn nhiều là thêm cái này vào wp-config.php. Nó dự định sẽ được chỉnh sửa với các cài đặt cấu hình.
Nilpo

4

Tôi có xu hướng sử dụng phương pháp này

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

Bằng cách này, tôi không vô tình tắt thứ gì đó tôi cần


1
Điều đó cho phép bạn kiểm soát ít hơn. Bạn đang cho rằng bất cứ điều gì hiện được cấu hình là chính xác. Tốt hơn là đặt nó trực tiếp khi cần thiết để bạn không có cấu hình chồng chéo.
Nilpo

Hiểu biết. Mỗi trường hợp là khác nhau.
realtebo

1
Đây vẫn là câu trả lời tốt nhất. Đây là người duy nhất trả lời trực tiếp câu hỏi: chỉ tắt E_DEPRECATED mà không có bất kỳ tác dụng phụ nào.
Sygmoral

-2

lỗi này xảy ra khi bạn thay đổi phiên bản php của mình: rất đơn giản để chặn thông báo lỗi này

Để chặn thông báo Lỗi ĐỔI, chỉ cần thêm mã bên dưới vào tệp index.php của bạn:

init_set ('display_errors', Sai);


đừng làm vậy, nó che giấu tất cả các thông báo lỗi, không chỉ cho khấu hao.
tanaydin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.