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.ini
như đượ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.log
vị 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_errors
KHÔ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_errors
tù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_log
tù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_set
nếu cần.
(Xin lưu ý rằng display_errors
nên được tắt trong php.ini nếu tùy chọn này được bật)
display_errors
bị 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_set
khô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.