错误日志是定位PHP问题的核心线索,需先确定日志位置并实时查看内容:
/var/log/php-fpm/error.log(默认路径,需确认php-fpm.conf或/etc/php-fpm.d/www.conf中的error_log设置);/var/log/httpd/error_log、Nginx的/var/log/nginx/error.log(若PHP通过Web服务器运行)。sudo tail -f /var/log/php-fpm/error.log # 实时查看PHP-FPM日志 sudo tail -f /var/log/httpd/error_log # 实时查看Apache错误日志 sudo grep "PHP" /var/log/nginx/error.log # 过滤Nginx中日志中的PHP错误 日志中会明确显示错误类型(如语法错误、致命错误)、发生位置(文件名+行号)及上下文信息。若日志未记录或需直接在浏览器中查看错误(生产环境务必关闭),可通过以下方式开启:
php.ini(路径可通过php --ini获取),修改以下配置:error_reporting = E_ALL # 报告所有错误 display_errors = On # 在浏览器显示错误 log_errors = On # 同时记录到日志 error_log = /var/log/php_errors.log # 自定义日志路径(可选) 保存后重启PHP服务:sudo systemctl restart php-fpm。ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); 此方法适合快速调试单个脚本。若错误日志提示语法问题(如Parse error),需用PHP内置命令检查脚本语法:
php -l /path/to/script.php 命令会返回语法是否正确及错误位置,修复后再测试。
php --ini 确认加载的php.ini文件路径,避免修改错误配置文件。php -t /etc/php.ini 若配置有误,会提示错误位置,修正后重启PHP服务。PHP进程需对脚本及相关文件有读取权限,否则会报Permission denied错误:
sudo chmod 755 /path/to/script.php # 赋予可读可执行权限 sudo chown apache:apache /path/to/script.php # 确保所有者为Web服务器用户(如Apache的apache) 若使用SELinux,需调整上下文:
sudo chcon -R -t httpd_sys_rw_content_t /path/to/script sudo yum install php-xdebug 编辑php.ini添加配置:zend_extension=xdebug.so xdebug.mode=debug xdebug.client_host=127.0.0.1 xdebug.client_port=9003 xdebug.start_with_request=yes 重启PHP服务后,Xdebug会收集调试信息。若错误提示缺少扩展(如Call to undefined function mysql_connect()),需安装对应扩展:
sudo yum install php-mysqlnd # MySQL扩展 sudo yum install php-gd # GD库(图片处理) sudo yum install php-mbstring # 多字节字符串支持 安装后重启PHP服务:sudo systemctl restart php-fpm。
LoadModule php_module、Nginx的fastcgi_pass指向PHP-FPM端口)。Enforcing模式,可能阻止PHP访问文件,可临时设置为Permissive测试:sudo setenforce 0 若问题解决,需调整SELinux策略或添加规则。通过以上步骤,可系统排查CentOS中PHP错误。优先查看日志定位具体问题,再针对性解决,避免盲目修改配置。