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

相关推荐
鸠摩智首席音效师8 小时前
如何安装和配置 Nginx 反向代理服务器 ?
运维·nginx
ShoreKiten10 小时前
ctfshow-web257【保姆级wp】
php·web
星光不问赶路人11 小时前
Nginx 的 location 路径匹配语法详解
nginx·api
GDAL11 小时前
深入理解 NJS 全局对象:掌控运行时的核心工具
nginx·njs
GDAL12 小时前
精通 NJS HTTP 请求对象:全方位掌控 NGINX 请求生命周期
nginx·njs
飞翔沫沫情13 小时前
Nginx运维维护规范及全配置详解【持续更新】
nginx·nginx 配置·nginx 操作手册·nginx 使用规范·nginx 日志规范·nginx 配置文件说明
deriva13 小时前
nginx如何将某域名/二级站点/代理到二级站点?以ChirpStack实战为例
运维·nginx
潇凝子潇14 小时前
Apache Kafka 跨集群复制实现方案
分布式·kafka·apache
AC赳赳老秦1 天前
DeepSeek 私有化部署避坑指南:敏感数据本地化处理与合规性检测详解
大数据·开发语言·数据库·人工智能·自动化·php·deepseek