Tôi cần thiết lập tập lệnh PHP của mình ở đầu để tắt báo cáo lỗi cho các tiêu chuẩn nghiêm ngặt.
Ai có thể giúp đỡ?
Tôi cần thiết lập tập lệnh PHP của mình ở đầu để tắt báo cáo lỗi cho các tiêu chuẩn nghiêm ngặt.
Ai có thể giúp đỡ?
Câu trả lời:
Bạn có muốn tắt báo cáo lỗi hay chỉ ngăn người dùng nhìn thấy nó? Nó thường là một ý tưởng tốt để ghi lại lỗi, ngay cả trên một trang web sản xuất.
# in your PHP code:
ini_set('display_errors', '0'); # don't show any errors...
error_reporting(E_ALL | E_STRICT); # ...but do log them
Chúng sẽ được ghi vào nhật ký hệ thống tiêu chuẩn của bạn hoặc sử dụng error_log
chỉ thị để chỉ định chính xác nơi bạn muốn xảy ra lỗi.
php.ini
tệp của mình , ví dụ nếu bạn không thể sửa đổi mã PHP.
php.ini
hoặc .htaccess
hoặc nơi nào đó trong mã PHP của tôi.
Không có lỗi.
error_reporting(0);
hoặc không nghiêm ngặt
error_reporting(E_ALL ^ E_STRICT);
và nếu bạn muốn hiển thị lại tất cả các lỗi, hãy sử dụng
error_reporting(-1);
^
chỉ tốt khi bỏ qua một loại lỗi. Nếu bạn muốn tắt các loại bổ sung, bạn nên sử dụng E_ALL & ~E_DEPRECATED & ~E_STRICT
định dạng. Hoặc có lẽ là (E_ALL & ~(E_DEPRECATED | E_STRICT))
định dạng.
ini_set('error_reporting', E_ALL&~E_STRICT);
Báo cáo loại bỏ các lỗi STRICT trong PHP> = 5.4ini_set('error_reporting', E_ALL^E_STRICT);
^
("xor") chứ không phải & ~
("và không") là một ý tưởng tồi ! ^
phụ thuộc vào giả định rằng ví dụ E_STRICT là một phần của E_ALL và luôn luôn là một phần của nó. Điều này là xấu vì E_ALL đã thay đổi trong quá khứ (E_STRICT không phải là quá khứ của nó, nhưng bây giờ là từ PHP 5.4). Nếu một ngày giả định thất bại, ^
nó sẽ không chỉ phá vỡ mà còn thực sự ngược lại với những gì nó phải làm: Nó sẽ kích hoạt E_STRICT do cách XOR ( ^
) hoạt động. & ~
tuy nhiên sẽ luôn vô hiệu hóa E_STRICT, bất kể giá trị hiện tại của E_ALL. Do đó & ~
nên được sử dụng.
Tất cả các giải pháp trên là chính xác. Nhưng, khi chúng ta đang nói về một ứng dụng PHP bình thường, chúng phải được đưa vào mỗi trang mà nó yêu cầu. Một cách để giải quyết điều này, là thông qua .htaccess
thư mục gốc. Chỉ để che giấu lỗi. [Đặt một trong các dòng tiếp theo trong tệp]
php_flag display_errors off
Hoặc là
php_value display_errors 0
Tiếp theo, để đặt báo cáo lỗi
php_value error_reporting 30719
Nếu bạn đang tự hỏi làm thế nào giá trị 30719
đến, E_ALL (32767), E_STRICT (2048) thực sự là hằng số giữ giá trị số và ( 32767 - 2048 = 30719
)
php_admin_value error_reporting
để làm việc này (trong cấu hình vhost).
Giá trị mặc định của error_reporting cờ là E_ALL & ~ E_NOTICE nếu không được thiết lập trong php.ini. Nhưng trong một số cài đặt (đặc biệt là cài đặt nhắm mục tiêu môi trường phát triển) có E_ALL | E_STRICT được đặt làm giá trị của cờ này (đây là giá trị được đề xuất trong quá trình phát triển ). Trong một số trường hợp, đặc biệt khi bạn muốn chạy một số dự án nguồn mở, được phát triển trước thời đại PHP 5.3 và chưa được cập nhật với các thực tiễn tốt nhất được định nghĩa bởi PHP 5.3, trong môi trường phát triển của bạn, có thể bạn sẽ gặp phải một số tin nhắn như bạn đang nhận được. Cách tốt nhất để đối phó với tình huống này, là chỉ đặt E_ALL làm giá trị của cờ error_Vporting , trong hoặcphp.ini hoặc trong mã (có thể trong bộ điều khiển phía trước như index.php trong web-root như sau:
if(defined('E_STRICT')){
error_reporting(E_ALL);
}
WordPress
Nếu bạn làm việc trong môi trường wordpress, Wordpress sẽ đặt mức lỗi trong tệp wp-gộp / load.php trong hàm wp_debug_mode()
. Vì vậy, bạn phải thay đổi cấp độ SAU KHI chức năng này đã được gọi (trong tệp không được kiểm tra trong git để chỉ phát triển) hoặc sửa đổi trực tiếp error_reporting()
cuộc gọi
Tôi không thấy câu trả lời rõ ràng và phù hợp với phần mềm sẵn sàng sản xuất, vì vậy đây là:
/*
* Get current error_reporting value,
* so that we don't lose preferences set in php.ini and .htaccess
* and accidently reenable message types disabled in those.
*
* If you want to disable e.g. E_STRICT on a global level,
* use php.ini (or .htaccess for folder-level)
*/
$old_error_reporting = error_reporting();
/*
* Disable E_STRICT on top of current error_reporting.
*
* Note: do NOT use ^ for disabling error message types,
* as ^ will re-ENABLE the message type if it happens to be disabled already!
*/
error_reporting($old_error_reporting & ~E_STRICT);
// code that should not emit E_STRICT messages goes here
/*
* Optional, depending on if/what code comes after.
* Restore old settings.
*/
error_reporting($old_error_reporting);
E_ALL & ~E_DEPRECATED & ~E_STRICT
sản xuất. Lưu ý rằng họ đề nghị bạn vô hiệu hóa các tiêu chuẩn nghiêm ngặt.