PHP 程序明明报错了,页面却一片空白?
接口直接 500,却 什么错误信息都没有?
很多人不是不会改 Bug,
而是------根本不知道 PHP 错误日志在哪里看。
这篇文章,一次把 Apache / Nginx / PHP-FPM / phpstudy 下的 PHP 错误日志位置和排查思路讲清楚。
一、先搞清一个关键点:PHP 错误到底"记在哪里"?
PHP 错误日志 不一定只有一个地方,取决于:
- 你用的是 Apache 还是 Nginx
- PHP 是模块模式,还是 PHP-FPM
- PHP 配置里
error_log写没写 - 本地还是线上环境
所以正确思路是:
不要猜日志位置,要按环境去找
二、最通用的方法:先看 php.ini 里的 error_log
不管什么环境,第一步都一样。
1️⃣ 找到当前使用的 php.ini
在 PHP 文件里写一行:
<?php phpinfo(); ?>
搜索关键词:
Loaded Configuration File
记住这个路径。
2️⃣ 查看 error_log 配置
在 php.ini 里搜索:
error_log
常见情况:
error_log = /var/log/php_errors.log
👉 这个路径就是 PHP 最核心的错误日志
如果是空的:
error_log =
说明:
- PHP 错误可能走 Web 服务器日志
- 或直接被丢弃(新手最容易踩坑)
三、Apache + PHP 错误日志在哪里看?
常见环境:Apache + mod_php
这种情况下:
PHP 错误通常写进 Apache 错误日志
常见位置👇
Linux(CentOS / Ubuntu)
/var/log/apache2/error.log
# 或
/var/log/httpd/error_log
Windows / phpstudy
phpstudy/Apache/logs/error.log
调试建议
当你看到:
- 页面空白
- 接口 500
👉 第一时间 tail Apache error.log
tail -f error.log
四、Nginx + PHP-FPM 错误日志怎么看?(最容易混)
这是线上环境最常见、也最容易搞错的。
1️⃣ Nginx 错误日志(不是 PHP 错误)
/var/log/nginx/error.log
这里常见的是:
- 502 Bad Gateway
- upstream prematurely closed connection
👉 只能说明 PHP-FPM 有问题,不是代码错在哪
2️⃣ PHP-FPM 错误日志(重点)
打开 PHP-FPM 配置:
php-fpm.conf
# 或
www.conf
查找:
error_log = /var/log/php-fpm/error.log
常见路径:
/var/log/php-fpm/error.log
/var/log/php7.4-fpm.log
👉 这里才是 PHP 代码 Fatal Error 的地方
3️⃣ PHP-FPM 子进程错误(很多人不知道)
在 www.conf 中:
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
👉 有些 Fatal Error 只会出现在这里
五、phpstudy 如何查看 PHP 错误日志?(新手必看)
phpstudy 是很多人学习 PHP 的第一站,但坑也最多。
必查 3 个地方 👇
1️⃣ PHP 错误日志
phpstudy/PHPTutorial/php/php7.x/logs/php_error.log
2️⃣ Apache / Nginx 错误日志
phpstudy/PHPTutorial/Apache/logs/error.log
phpstudy/PHPTutorial/Nginx/logs/error.log
3️⃣ phpstudy 面板里的"日志"按钮
👉 有些错误只在面板汇总里显示
六、为什么"页面不报错,日志却有错误"?
这是 PHP 初学者 必踩坑之一。
原因通常是:
display_errors = Off
log_errors = On
👉 这是生产环境推荐配置
开发环境调试建议:
display_errors = On
error_reporting = E_ALL
记住:
页面不显示 ≠ 没有错误
真相永远在日志里
七、PHP 出现 500 错误,正确排查顺序(很重要)
当你遇到:
- 500 Internal Server Error
- 接口直接挂掉
不要乱改代码,按这个顺序:
1️⃣ 看 Web 服务器 error.log
2️⃣ 看 PHP-FPM error.log
3️⃣ 看 PHP 自己的 error_log
4️⃣ 再去看代码逻辑
👉 90% 的问题在前 3 步就定位了
八、一个非常实用的小建议(老程序员经验)
在每个项目里,主动指定 PHP 错误日志路径:
error_log = /www/logs/project_php_error.log
好处是:
- 不和系统日志混
- 排错效率翻倍
- 线上问题更好回溯
最后一句话
PHP 错误不可怕,看不到错误才可怕。
学会看日志,你已经超过一半的 PHP 新手了。