Debian系统中PHP日志记录的内容及来源
Debian系统中,PHP日志记录的内容主要取决于日志的来源(PHP自身、PHP-FPM、Web服务器),不同来源的日志记录信息各有侧重,以下是详细分类说明:
PHP通过error_log()函数或php.ini配置记录自身运行中的错误,是最基础的日志来源。记录的信息包括:
E_ERROR(致命错误,脚本终止)、E_WARNING(运行时警告,脚本继续)、E_PARSE(语法解析错误)、E_NOTICE(轻微提示,如未定义变量)、E_DEBUG(调试信息,需手动开启)等;/var/www/html/index.php:25);2025-10-01 14:30:00)。配置方式:通过php.ini文件调整(路径通常为/etc/php/{version}/apache2/php.ini或/etc/php/{version}/fpm/php.ini),关键参数包括:
error_reporting = E_ALL # 报告所有错误 display_errors = Off # 不在浏览器显示错误(生产环境建议关闭) log_errors = On # 开启日志记录 error_log = /var/log/php_errors.log # 日志文件路径 适用场景:记录PHP脚本自身的错误,便于开发者排查代码问题。
若使用PHP-FPM(FastCGI进程管理器),其日志会记录进程的运行状态、请求处理情况及错误信息,分为两类:
错误日志(error_log):
记录PHP-FPM进程的异常信息,内容包括:
SIGSEGV(段错误)、SIGBUS(总线错误)崩溃,或request_terminate_timeout(请求超时)触发的终止;memory_limit的警告;listen地址绑定失败、权限不足等。访问日志(access_log,可选):
需在php-fpm.conf或进程池配置文件(如/etc/php/{version}/fpm/pool.d/www.conf)中开启,记录客户端对PHP的请求信息,内容包括:
%R);%t,格式如%d/%b/%Y:%H:%M:%S %z);%m %r,如GET /index.php?id=1);%s,如200、404、500);%d,单位秒,如0.123);%M,如1024KB);%p)。配置方式:
php-fpm.conf中设置error_log = /var/log/php-fpm/error.log(默认路径);access_log = /var/log/php-fpm/access.log,并设置pm.status_path = /status(用于查看进程状态)。若PHP通过Web服务器(Apache/Nginx)运行,Web服务器会记录与PHP请求相关的日志,可与PHP日志互补,关联请求的完整生命周期:
Apache日志:
mod_php加载失败、PHP模块配置错误;403 Forbidden);502 Bad Gateway)。LogFormat指令自定义)。Nginx日志:
fastcgi_read_timeout触发(请求处理超时);500错误时的简要信息。log_format指令自定义)。配置方式:
/etc/apache2/apache2.conf或虚拟主机配置文件,设置ErrorLog、CustomLog指令;/etc/nginx/nginx.conf或服务器块配置文件,设置error_log、access_log指令。开发者可通过PHP代码使用error_log()函数或第三方日志库(如Monolog)记录自定义业务日志,内容包括:
display_errors或写入日志文件);示例代码:
// 使用error_log函数记录到指定文件 error_log("User {$username} logged in at " . date('Y-m-d H:i:s'), 3, "/var/log/php/custom.log"); // 使用Monolog库记录(推荐) require 'vendor/autoload.php'; use Monolog\Logger; use Monolog\Handler\StreamHandler; $log = new Logger('my_app'); $log->pushHandler(new StreamHandler('/var/log/php/business.log', Logger::INFO)); $log->info('User logged in', ['username' => $username, 'ip' => $_SERVER['REMOTE_ADDR']]); 适用场景:记录业务逻辑的关键节点,便于后续审计、分析或排查业务问题。
Debian系统中,PHP日志的默认路径通常如下:
/var/log/php_errors.log(需通过php.ini配置);/var/log/php-fpm/error.log(主进程日志);/var/log/php-fpm/access.log(需开启access_log);/var/log/apache2/error.log;/var/log/apache2/access.log;/var/log/nginx/error.log;/var/log/nginx/access.log。注意:日志路径可能因发行版版本或自定义配置而变化,建议通过配置文件确认。