在 CentOS 上排查 PHP 报错,一般按「看日志 → 定位错误 → 查配置 → 复现/修复」的思路来。下面是一套比较实用的排错方法。
不同方式,日志位置不同:
php -v
which php
ps aux | grep php
常见三种:
# 主错误日志
tail -f /var/log/php-fpm/error.log
# 慢日志(如有配置)
tail -f /var/log/php-fpm/www-slow.log
PHP-FPM 池日志(通常是 www.conf):
grep -n "log" /etc/php-fpm.d/www.conf
常见配置:
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
tail -f /var/log/httpd/error_log
如果是 mod_php,PHP 错误一般写在 Apache 错误日志里。
Nginx 错误日志:
tail -f /var/log/nginx/error.log
PHP 错误还是在 php-fpm 日志或 error_log 指定的文件。
查看 php.ini:
php --ini
重点看:
display_errors = Off ; 生产环境建议 Off
log_errors = On
error_log = /var/log/php/php_errors.log
error_reporting = E_ALL
如果没有设置 error_log,错误可能写到:
php.ini:
display_errors = On
error_reporting = E_ALL
或脚本里:
ini_set('display_errors', 1);
error_reporting(E_ALL);
看:
tail -f /var/log/php-fpm/error.log
tail -f /var/log/nginx/error.log
常见原因:
ls -l /var/www/html
ps aux | grep php-fpm
PHP-FPM 用户(如 apache / nginx):
grep user /etc/php-fpm.d/www.conf
修复示例:
chown -R nginx:nginx /var/www/html
chmod -R 755 /var/www/html
php.ini:
memory_limit = 256M
max_execution_time = 30
php -m
php -i | grep extension_dir
安装示例:
yum install php-mysqlnd php-gd php-mbstring
systemctl restart php-fpm
# 实时看日志
tail -f /var/log/php-fpm/error.log
# 过滤错误
grep -i error /var/log/php-fpm/error.log
# CLI 调试
php -l file.php # 语法检查
php file.php # 直接运行看输出
log_errors如果你愿意,可以把**具体报错日志或场景(Nginx/Apache、500/空白页/超时)**贴出来,我可以直接帮你定位。