Câu trả lời:
Sử dụng mã sau đây:
ini_set("log_errors", 1);
ini_set("error_log", "/tmp/php-error.log");
error_log( "Hello, errors!" );
Sau đó xem tập tin:
tail -f /tmp/php-error.log
Hoặc cập nhật php.ininhư được mô tả trong mục blog này từ năm 2008.
php_flag log_errors on php_value error_log /home/path/public_html/domain/PHP_errors.log. Xem perishablepress.com/ Kẻ
tmp/php-error.logvị trí mà bạn mong muốn?
Xem
error_log - Gửi thông báo lỗi ở đâu đóThí dụ
error_log("You messed up!", 3, "/var/tmp/my-errors.log");
Bạn có thể tùy chỉnh xử lý lỗi với trình xử lý lỗi của riêng bạn để gọi hàm này cho bạn bất cứ khi nào có lỗi hoặc cảnh báo hoặc bất cứ điều gì bạn cần đăng nhập xảy ra. Để biết thêm thông tin, vui lòng tham khảo Xử lý lỗi chương trong Hướng dẫn sử dụng PHP
Chỉ cần đặt các mã này ở đầu tệp PHP / index của bạn:
error_reporting(E_ALL); // Error/Exception engine, always use E_ALL
ini_set('ignore_repeated_errors', TRUE); // always use TRUE
ini_set('display_errors', FALSE); // Error/Exception display, use FALSE only in production environment or real server. Use TRUE in development environment
ini_set('log_errors', TRUE); // Error/Exception file logging engine.
ini_set('error_log', 'your/path/to/errors.log'); // Logging file path
display_errorsKHÔNG BAO GIỜ được bật trên máy chủ sản xuất trực tiếp - lệnh đó dành riêng cho đầu ra cho người dùng và không có tác dụng trong việc đăng nhập. php.net/manual/en/...
thêm mã này vào .htaccess (thay thế cho hàm php.ini / ini_set ):
<IfModule mod_php5.c>
php_flag log_errors on
php_value error_log ./path_to_MY_PHP_ERRORS.log
# php_flag display_errors on
</IfModule>
* như đã nhận xét: đây là cho các máy chủ Apache -type và không dành cho Nginx hoặc các máy chủ khác.
Đó là chức năng ngắn cá nhân của tôi
# logging
/*
[2017-03-20 3:35:43] [INFO] [file.php] Here we are
[2017-03-20 3:35:43] [ERROR] [file.php] Not good
[2017-03-20 3:35:43] [DEBUG] [file.php] Regex empty
mylog ('hallo') -> INFO
mylog ('fail', 'e') -> ERROR
mylog ('next', 'd') -> DEBUG
mylog ('next', 'd', 'debug.log') -> DEBUG file debug.log
*/
function mylog($text, $level='i', $file='logs') {
switch (strtolower($level)) {
case 'e':
case 'error':
$level='ERROR';
break;
case 'i':
case 'info':
$level='INFO';
break;
case 'd':
case 'debug':
$level='DEBUG';
break;
default:
$level='INFO';
}
error_log(date("[Y-m-d H:i:s]")."\t[".$level."]\t[".basename(__FILE__)."]\t".$text."\n", 3, $file);
}
Hãy xem log_errorstùy chọn cấu hình trong php.ini. Nó dường như chỉ làm những gì bạn muốn. Tôi nghĩ bạn cũng có thể sử dụng error_logtùy chọn để thiết lập tệp nhật ký của riêng mình.
Khi lệnh log_errorsđược đặt thành On, mọi lỗi được báo cáo bởi PHP sẽ được ghi vào nhật ký máy chủ hoặc tệp được chỉ định với error_log. Bạn cũng có thể thiết lập các tùy chọn này ini_setnếu cần.
(Xin lưu ý rằng display_errorsnên được tắt trong php.ini nếu tùy chọn này được bật)
display_errorsbị vô hiệu hóa nếu bạn kích hoạt log_errors? Không có ý nghĩa trong quan điểm của tôi. :)
ini_setkhông chỉ hoạt động nếu mã đó được thực thi. Không hữu ích cho mã có lỗi phân tích cú pháp vì lỗi sẽ xảy ra trước khi mã được thực thi. Thay vào đó hãy viết những thay đổi đó vào php.ini.