2010-01-20 43 views
5

Tôi đang cố gắng không ghi lại các lỗi thông báo, được ghi vào tệp nhật ký lỗi trên máy chủ của tôi. Tôi đã thử (ở trên cùng của số index.php):Cách dừng PHP ghi nhật ký Lỗi thông báo PHP

ini_set('display_errors', 0); 
error_reporting(E_ALL^E_NOTICE); 

Nhưng tôi vẫn nhận được thông báo lỗi PHP trong tệp nhật ký lỗi được cho biết.

Tôi đang ở trong môi trường lưu trữ được chia sẻ, vì vậy tôi không thể chỉnh sửa tệp php.ini của mình.

phpinfo() nói với tôi:

- Version 5.2.12 
- error_reporting 6143 
- error_log error_log 
- safe_mode Off 
+3

Làm thế nào về sửa chữa nguyên nhân của thông báo thay vì nhắm mắt để đó? Chúng không xảy ra mà không có lý do gì. – Gumbo

Trả lời

0

bạn có thể thay đổi mức độ báo cáo lỗi tới một cái gì đó khác nhau

error_reporting (E_ERROR | E_WARNING | E_PARSE);

thấy http://www.php.net/manual/en/function.error-reporting.php để biết thêm thông tin

+0

Tôi đã thử rằng, quá, bao gồm cả bạn biến thể - vẫn nhận được đăng nhập. Có cách nào trong php.ini để làm cho ini_set() và error_reporting() KHÔNG hoạt động? –

2

Hãy thử thực hiện:

error_reporting(E_ALL & ~E_NOTICE); 

Chỉ thị error_reporting() sẽ luôn luôn làm việc (PHP_INI_ALL).

Bạn có chắc chắn không bao gồm bất kỳ thư viện nào thay đổi cấp báo cáo lỗi của bạn không?


Do error_reporting(0); và sau đó làm điều này:

var_dump(error_reporting()); 

đầu ra là gì?

+0

Tôi đã tìm kiếm toàn bộ dự án cho "error_reporting" và nó chỉ hiển thị một lần truy cập trong tệp index.php và đó là lỗi error_reporting mà tôi đã thêm vào. Không có sự xuất hiện của "set_error_handler". –

+0

@magenta: Không có 'ini_set()'? –

+1

đầu ra var_dump int (6135) là E_ALL & ~ E_NOTICE –

8

Nếu bạn đang sử dụng máy chủ Apache, hãy thử đặt giá trị trong tệp .htaccess. Định dạng chung là:

php_flag log_errors on 
php_value error_log /path/to/error.log 
php_value error_reporting integer 

nơi integer là giá trị bạn nhận được từ chạy một cái gì đó như:

echo E_ALL & ~E_NOTICE; // prints 30711 

Thông tin thêm ở đây:

http://perishablepress.com/press/2008/01/14/advanced-php-error-handling-via-htaccess/

+0

Điều này dường như không hoạt động. –

+0

Hãy coi chừng! mã (như 30711) có thể khác nhau trên các phiên bản PHP khác nhau. Tốt nhất là kiểm tra tiếng vang trên bản thân máy chủ, nơi bạn sẽ áp dụng cấu hình – spiritoo

1

Bạn có nhận được Thông báo của hay " USER "Thông báo trong nhật ký của bạn?

Để vô hiệu hóa cả hai sử dụng:

error_reporting(E_ALL & ~E_NOTICE & ~E_USER_NOTICE); 
+0

Hiển thị trong nhật ký dưới dạng "Thông báo PHP" –

+0

Tôi tin rằng cả hai đều được ghi là "Thông báo PHP". Bạn có thể tìm kiếm phpcode cho "trigger_error" hoặc E_USER_NOTICE. –

Các vấn đề liên quan