Ubuntu PHP日志异常排查与解决指南
首先需明确PHP日志的存储路径,常见位置包括:
/var/log/apache2/error.log(集成PHP时,Apache会记录PHP错误);/var/log/nginx/error.log(需配合PHP-FPM,错误日志通常在此);/var/log/php-fpm.log 或 /var/log/php{version}-fpm.log(如/var/log/php7.4-fpm.log,路径由PHP-FPM配置决定)。php.ini文件(sudo nano /etc/php/{version}/apache2/php.ini或/etc/php/{version}/fpm/php.ini),查找error_log配置项,其值即为日志路径;<?php phpinfo(); ?>),搜索“error_log”查看当前生效的日志路径。使用命令行工具实时查看最新错误(以Apache为例):
sudo tail -f /var/log/apache2/error.log
若需筛选特定错误(如“Fatal Error”),可使用grep:
sudo grep "PHP Fatal error" /var/log/apache2/error.log
日志中的关键信息包括:
Notice、Warning、Fatal Error,优先处理Fatal Error);/var/www/html/index.php:25)。include或require语句;mbstring、gd),安装对应扩展:sudo apt install php-mbstring(替换为所需扩展名),然后重启Web服务器:sudo systemctl restart apache2(Apache)或sudo systemctl restart nginx(Nginx)。www-data)无权访问文件/目录。sudo chown -R www-data:www-data /var/www/html # 将所有权赋予www-data用户
sudo chmod -R 755 /var/www/html # 设置目录权限为755(文件可设为644)
php.ini中的memory_limit设置。memory_limit值(如设置为256M):sudo nano /etc/php/{version}/apache2/php.ini # 或fpm/php.ini
找到memory_limit = 128M(默认值),修改为memory_limit = 256M,保存后重启Web服务器。sudo systemctl status php{version}-fpm(如php7.4-fpm),若未运行,启动服务:sudo systemctl start php{version}-fpm;sudo netstat -plnt | grep php{version}-fpm(如127.0.0.1:9000)或ls -l /var/run/php/php{version}-fpm.sock,确保Nginx/Apache配置中的fastcgi_pass指向正确地址;/etc/php/{version}/fpm/php-fpm.conf中的error_log指定),定位具体错误。若需自定义日志记录,可修改php.ini文件:
log_errors = On;error_reporting = E_ALL(记录所有错误,生产环境可设为E_ALL & ~E_NOTICE);error_log = /var/log/php_errors.log(需确保目录存在且有写入权限)。cron任务定期运行分析脚本(如统计错误类型),及时发现潜在问题;grep、awk(提取错误类型并统计)、ELK Stack(可视化分析)、Splunk(集中管理日志);logrotate避免日志文件过大(Ubuntu默认已配置/etc/logrotate.d/apache2、/etc/logrotate.d/nginx,可根据需要调整)。