在CentOS系统中,PHP错误日志的位置取决于Web服务器(Apache/Nginx)和PHP处理方式(PHP-FPM)的配置,常见路径如下:
/var/log/php-fpm/error.log(部分系统可能使用www.log);/var/log/httpd/error_log(若PHP作为Apache模块运行);/var/log/nginx/error.log(若PHP通过FastCGI与Nginx通信)。php.ini中的error_log配置(需先运行php --ini定位php.ini文件)。使用命令行工具快速查看日志内容,重点关注最近错误或特定关键词:
sudo tail -f /var/log/php-fpm/error.log(替换为实际日志路径);sudo tail -n 50 /var/log/php-fpm/error.log;sudo grep -i "fatal error" /var/log/php-fpm/error.log(不区分大小写);sudo journalctl -u php-fpm --since "1 hour ago"(查看1小时内的PHP-FPM日志)。根据日志中的错误类型(如Fatal Error、Warning、Notice)和描述,采取对应措施:
/var/www/html/index.php on line 15)。php -m | grep mysqli(检查mysqli扩展),若未安装则通过sudo yum install php-mysqli(CentOS)安装;php.ini,取消对应扩展的注释(如extension=mysqli.so);sudo systemctl restart php-fpm(PHP-FPM)或sudo systemctl restart httpd(Apache)。require_once、include或文件写入操作(如日志写入、上传文件)。apache或nginx用户)无权访问目标文件/目录。ls -l /path/to/file;sudo chmod 644 /path/to/file(文件)、sudo chmod 755 /path/to/directory(目录);sudo chown apache:apache /path/to/file(Apache用户)或sudo chown nginx:nginx /path/to/file(Nginx用户)。config.php或数据库连接文件中的配置(如host、username、password、dbname);sudo systemctl status mysqld(MySQL)或sudo systemctl status mariadb(MariaDB),未运行则启动:sudo systemctl start mysqld;sudo firewall-cmd --list-ports,若未开放则添加:sudo firewall-cmd --add-port=3306/tcp --permanent,然后sudo firewall-cmd --reload。php.ini中memory_limit的设置(默认通常为128M或256M)。ini_set('memory_limit', '256M');php.ini,找到memory_limit设置为更大值(如memory_limit = 512M);LIMIT分页查询)。php.ini中max_execution_time的设置(默认30秒),常见于复杂查询或循环操作。set_time_limit(60)(单位:秒);php.ini,调整max_execution_time(如max_execution_time = 300);修改配置文件(如php.ini、httpd.conf、php-fpm.conf)或修复代码后,需重启对应服务使更改生效:
sudo systemctl restart php-fpm;sudo systemctl restart httpd;sudo systemctl restart nginx。cron任务每天定时检查日志(如0 2 * * * tail -n 100 /var/log/php-fpm/error.log >> /var/log/php_error_daily.log);logwatch或Prometheus+Grafana监控日志中的错误关键词(如“error”“fatal”),及时收到告警;php.ini中设置display_errors = On、error_reporting = E_ALL(仅用于开发,生产环境务必关闭display_errors)。