2008-12-01 31 views
21

Phương pháp tốt nhất để ẩn các lỗi php được hiển thị trên trình duyệt là gì?Cách tốt nhất để ngăn chặn các lỗi php trên máy chủ sản xuất

Nó sẽ được sử dụng như sau:

ini_set("display_errors", 1); 

Bất cứ lời khuyên thực hành tốt nhất sẽ được đánh giá là tốt!

Tôi đang ghi nhật ký lỗi, tôi chỉ muốn đảm bảo rằng việc đặt giá trị display_errors thành tắt (hoặc 0) sẽ không ngăn lỗi được ghi nhật ký.

+0

Làm như tôi đã nói và các lỗi của bạn sẽ không được hiển thị nhưng sẽ được ghi lại. –

+0

Tôi thích từ 'Tốt hơn' so với 'Tốt nhất'. – kta

Trả lời

46

Cách tốt nhất là tất nhiên để ghi lại các lỗi của bạn thay vì hiển thị hoặc bỏ qua chúng.

Ví dụ này sẽ ghi nhật ký lỗi vào nhật ký hệ thống thay vì hiển thị chúng trong trình duyệt.

ini_set("display_errors", 0); 
ini_set("log_errors", 1); 

//Define where do you want the log to go, syslog or a file of your liking with 
ini_set("error_log", "syslog"); // or ini_set("error_log", "/path/to/syslog/file"); 
+0

Là người đứng đầu thay thế "syslog", bạn có thể đặt đường dẫn tệp và ghi nhật ký vào bất kỳ vị trí nào bạn yêu cầu. –

3

Giả sử bạn đang ở trong kiểm soát của tập tin php.ini, bạn có thể thực hiện những thay đổi toàn cầu bên trong tập tin đó thay vì phải mã ini_set đặt xung quanh trong tất cả các file php của bạn (mà bạn có thể quên để đưa vào một trong số các tệp của bạn một ngày, điều này có thể không tốt trong sản xuất).

1

Bạn cũng có thể sử dụng .htaccess apache để đăng nhập lỗi mà không cần chạm mã của bạn:

<IfModule mod_php5.c> 
    php_flag  display_errors Off 
    php_flag  log_errors  On 
    php_value  error_log  logs/errors 
</IfModule> 
+0

Tôi thích sử dụng php.ini hơn httpd.conf, nó sẽ rõ ràng hơn –

0

Cách tốt nhất? Sửa lỗi!

Nếu bạn cần một giải pháp tạm thời nhanh thì bạn có thể tắt display_errors, nhưng đảm bảo bạn đang ghi chúng ở đâu đó, vì cài đặt đó sẽ làm cho lỗi nghiêm trọng/phân tích cú pháp im lặng.

1

Tệp phân phối PHP không may gửi một thông báo hỗn hợp về xử lý các thông báo lỗi. Tệp php.ini mặc định có một số cài đặt phù hợp cho máy chủ sản xuất và các cài đặt khác tốt hơn cho máy chủ phát triển. Bạn nên bật tất cả các lỗi trong dev (error_reporting = E_ALLdisplay_errors = On), và tắt trong sản (display_errors = off nhưng điểm log_errors ở đâu đó). Tuy nhiên, hãy cố gắng hết sức để đảm bảo không có lỗi (hoặc chúng được xử lý).

2

đặt biến môi trường trên máy phát triển của bạn. sau đó bạn có thể kiểm tra môi trường của mình ở đầu mã để đảm bảo bạn đang ở trong môi trường phát triển. thì bạn có thể đặt mức báo cáo lỗi của PHP, bằng cách sử dụng hàm error_reporting().

if (isset($_ENV['MY_APP_MODE']) && ($_ENV['MY_APP_MODE'] == 'devel')) { 
    error_reporting(E_ALL); 
} else { 
    error_reporting(0); 
} 
Các vấn đề liên quan