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

相关推荐
zhikouai1 小时前
把外部助手接进聊天软件的架构分层与参数配置
服务器·网络·php
叼烟扛炮5 小时前
Linux 学习笔记(五十八):IO 多路复用封神——epoll 底层原理揭秘
linux·运维·服务器·网络·笔记·学习·php
叼烟扛炮5 小时前
Linux 学习笔记(五十一):数据链路层与 ARP 协议——局域网寻址与黑客骗局
linux·网络·网络协议·php·tcpdump
vipxieliang12 小时前
语言对比卡:PHP vs Go vs Java 的优缺点、适用场景与「为什么选 PHP」
java·go·php
东鹏特饮1 天前
系统运维(传统/通用运维)面试题
开发语言·php
多客:duokelijie1 天前
代练订单系统选型思路:跨品类游戏接入、订单分层管理、自动结算逻辑拆解!
数据库·mysql·微信小程序·前端框架·uni-app·php·持续部署
Lsetea1 天前
Docker更新SSL证书后容器仍读旧文件:单文件挂载与目录挂载排查
运维·nginx·docker·https·ssl证书
从琳开始9891 天前
网络原理入门(二)------OSI七层模型?TCP/IP五层(四层)模型原来是这样的
java·网络·tcp/ip·java-ee·php
BingoGo1 天前
PHP 标准库的价值远不止少写几行代码
后端·php
JaguarJack1 天前
PHP 标准库的价值远不止少写几行代码
后端·php·服务端