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

相关推荐
Avan_菜菜10 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
两个人的幸福12 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
ping某14 天前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
BingoGo14 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack14 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户30745969820715 天前
PHP 扩展——从入门到理解
php
鹏仔先生16 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
云水一下16 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
xingpanvip16 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
難釋懷16 天前
Nginx反向代理中的容错机制
运维·nginx