PHP 错误日志在哪里看?Apache / Nginx / PHP-FPM 一次讲清

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 新手了。

相关推荐
damoluomu3 天前
挑 PHP CMS 之前,先学会看它的协议
php
还是大剑师兰特3 天前
解决nginx错误:http://localhost:7000正常,http://localhost:7000/map 报错404
nginx·大剑师
xing-xing3 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
PC2005-cloud3 天前
Nginx 防盗链配置实战:用 referer 模块保护网站静态资源
nginx
子非鱼a3 天前
【WEB】Online ToolWEB
php
PHP实战开发录3 天前
Nginx上传大文件为什么报413
nginx·php·开发
damoluomu4 天前
国产企业级 PHP CMS:哪些能免费商用
php
郑州光合科技余经理4 天前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
MyFreeIT4 天前
Android PHP Manual
php
Lsetea4 天前
Nginx报No required SSL certificate was sent:mTLS客户端证书排查
运维·nginx·https·ssl·openssl