在 CentOS 上 PHP 日志报错的原因有很多种,下面我按最常见场景给你系统梳理一下,并告诉你怎么看日志、怎么定位问题。
不同环境位置不一样:
php --ini
或
php -i | grep error_log
常见配置:
log_errors = On
error_log = /var/log/php/php-error.log
/usr/local/php/var/log/php-fpm.log
/var/log/php-fpm/error.log
/var/log/php-fpm/www-error.log
/var/log/nginx/error.log
/var/log/httpd/error_log
报错示例:
failed to open stream: Permission denied
原因:
解决:
chown -R www:www /path
chmod -R 755 /path
如果是 SELinux:
setenforce 0 # 临时关闭测试
或:
semanage fcontext -a -t httpd_sys_rw_content_t "/path(/.*)?"
restorecon -Rv /path
报错示例:
syntax error, unexpected end of file
Call to undefined function
原因:
解决:
php -v
升级或调整代码版本
报错示例:
Class 'mysqli' not found
Call to undefined function curl_init()
解决:
yum install php-mysqlnd php-curl php-mbstring
systemctl restart php-fpm
报错示例:
connect() failed (111: Connection refused)
检查:
systemctl status php-fpm
journalctl -u php-fpm
Allowed memory size exhausted
Maximum execution time exceeded
php.ini:
memory_limit = 256M
max_execution_time = 300
# 1. 看 PHP 错误
tail -f /var/log/php-fpm/www-error.log
# 2. 看 Web 错误
tail -f /var/log/nginx/error.log
# 3. 看系统
journalctl -xe
你可以直接把 报错日志内容贴出来,我帮你判断是:
你现在的 PHP 是 5.6 / 7.x / 8.x?用的 Nginx 还是 Apache?