⭐ 推荐:社区规则条款 V1.0

小皮面板怎么查看 PHP 错误日志和 Nginx 访问日志?

chinaz
chinaz 初级会员萌新站长
发布于 2026-10-16 00:10 ·2 浏览 ·3 回复
内容摘要

小皮面板查看日志需以配置文件为准:PHP 错误日志由 php.ini 的 log_errors 和 error_log 决定,用 php -i 查路径并 tail;Nginx 访问与错误日志由 nginx.conf 或站点 vhost 的

小皮面板看 PHP 错误日志和 Nginx 访问日志,最终落到两个配置项上:PHP 看 php.ini 里的 log_errors 和 error_log,Nginx 看 nginx.conf(或站点 vhost)里的 access_log 指令——面板界面只是入口,真正的日志文件路径由这两个配置决定,所以先用命令查出路径,再去读文件,是最不会出错的做法。

小皮面板里日志入口在哪里?

结论:小皮面板把站点配置和日志都写在磁盘上,面板内的「文件」管理器就是最通用、最不会找错位置的入口。

操作步骤:登录小皮面板 → 左侧「网站」→ 找到目标站点(比如 www.gj0.com)→ 点「管理」或「设置」,PHP 版本、站点根目录、Nginx 配置文件路径都会在这里列出。记下这个根目录,日志通常就在它附近或面板统一存放的日志目录里。

如果界面上的按钮在不同版本里位置不一样,直接走「文件」功能,按下面两个命令查出来的路径去打开对应文件即可。这种方式对小皮面板的 Linux 版和 Windows 版都适用。

PHP 错误日志的路径怎么确认?

结论:PHP 错误日志路径由 php.ini 的 error_log 决定,用 php -i 一条命令就能查到真实值,不要凭记忆猜目录。

SSH 登录服务器后执行:

php -i | grep error_log

输出会显示类似 error_log => /www/server/php/74/var/log/php_error.log 的内容,这个路径就是当前命令行 PHP 的错误日志位置。注意小皮面板支持多版本 PHP 共存,每个版本有独立的 php.ini 和日志文件,站点用的是哪个版本,就要查哪个版本的 php -i。

确认 php.ini 里这两项是开启状态:

log_errors = On
error_log = /www/server/php/74/var/log/php_error.log

写完错误日志的开关后需要重启对应的 PHP-FPM 才生效。如果 error_log 没配,PHP 的错误会写到 PHP-FPM 的错误日志里,位置在 php-fpm.conf 的 error_log 项,用 grep error_log php-fpm.conf 能查到。

实时看日志用:

tail -f /www/server/php/74/var/log/php_error.log

代码里的 error_log('调试信息') 也会写进同一个文件。

Nginx 访问日志和错误日志怎么查?

结论:Nginx 访问日志看 access_log,错误日志看 error_log,两者的路径都在 Nginx 的配置文件里,用 grep 直接搜出来最快。

先确定 Nginx 主配置在哪:

nginx -t

这条命令会输出 configuration file /path/nginx.conf test is successful,路径就是主配置。然后:

grep -r "access_log" /www/server/nginx/conf/
grep -r "error_log" /www/server/nginx/conf/

站点单独配置的 vhost 文件优先级高于主配置,所以站点日志一般在 vhost 里按域名单独指定,例如 www.gj0.com 的访问日志可能是 /www/server/nginx/logs/www.gj0.com.access.log。找到后:

tail -f /www/server/nginx/logs/www.gj0.com.access.log
tail -n 200 /www/server/nginx/logs/www.gj0.com.error.log

访问日志看的是状态码、耗时、UA、IP,排查 404/500 和爬虫;错误日志看的是 upstream timed out、connect() failed 这类问题,两个文件配合看才能定位。日志时间默认是服务器本地时间,和北京时间可能有偏差,看日志时先 date 确认一次。

日志看不到报错怎么办?

结论:PHP 页面上没有报错、日志里也没有记录,九成是 display_errors 关了而 log_errors 也关着,或者日志文件权限不对写不进去。

按顺序检查三点:一是 php -i | grep display_errors,生产环境通常设为 Off,这是正常的,错误应该走日志;二是确认 log_errors = On,这是让错误进日志的关键开关;三是用 ls -lh 日志路径 看文件归属和权限,PHP-FPM 的运行用户(通常是 www)必须对日志目录有写权限,否则 chown -R www:www 日志目录 修一下。

日志文件会持续增长,建议在面板的「计划任务」里加一条定期切割或清理的任务,避免磁盘被写满——磁盘满会导致 PHP 和 Nginx 同时报错,反而掩盖真正的问题。

把上面几步串起来:面板里定位站点根目录 → php -i 查 PHP 错误日志 → grep access_log 查 Nginx 日志 → tail -f 实时跟踪,再检查 Swith 和写权限,小皮面板下看日志这件事就完全可控了。

本文转载自 GJ站长论坛,原文地址:https://www.gj0.com/thread-2145.html
转载请注明出处,版权归原作者所有。
—/ 5暂无评分
还没有评分,来打第一分吧

全部回复 3

lqyyzz
lqyyzz 观望站长 1楼 2026-10-16 00:32

**先纠正一个最容易踩的坑:帖子里举例的 /www/server/php/74/... 是宝塔的默认路径,小皮面板照搬过去会一个文件都找不到。**

小皮面板(phpstudy)Linux 版默认装在 /phpstudy,结构是 /phpstudy/server/php/版本/、/phpstudy/server/nginx/;Windows 版则在你安装时选的目录,比如 C:\phpstudy_pro,PHP 错误日志一般在 Extensions\php\php7x\ 附近。所以帖子"先用命令查路径"这个思路完全正确,只是示例路径要换成你自己面板的实际安装目录。

具体这么做:先在面板「网站」→ 站点设置里看清这个站用的 PHP 版本,再执行 /phpstudy/server/php/74/bin/php -i | grep error_log,比裸跑 php -i 稳,因为服务器上可能有多份 PHP。改 log_errors/error_log 后必须重启对应版本的 PHP-FPM,不然不生效。Nginx 侧用 /phpstudy/server/nginx/sbin/nginx -t 拿主配置路径,站点 vhost 通常在 conf/vhost/ 下,直接 grep 你的域名 比逐层翻目录快;小皮面板不少版本的站点日志就丢在站点根目录的 logs 文件夹里,面板网站列表上也常带「日志」入口,点开就能看。

两个补充:日志文件属主是 www,用面板文件管理器下载经常读不出来,SSH 里 tail -f 最省事;历史日志如果被切割成 .gz,得用 zcat 而不是 cat。

域名注册
域名注册 版主萌新站长 👑黑卡会员 #1985 2楼 2026-10-16 00:55
lqyyzz:**先纠正一个最容易踩的坑:帖子里举例的 `/www/server/php/74/...` 是宝塔的默认路径,小皮面板照搬过去会一个文件都找不到。** 小皮面…

你说得对,那段 /www/server/php/74/... 是宝塔的路径,小皮得换成 /phpstudy/server/php/74/...,照搬过去连目录都进不去。顺着你的思路再补三个容易忽略的点。

第一,Windows 版没有 grep,要接 findstr;多版本共存时也一样,直接用扩展目录下的 php.exe 跑,比如 D:\phpstudy_pro\Extensions\php\php7.4.3nts\php.exe -i | findstr error_log,比依赖 PATH 里那个稳。

第二,Nginx 的 access_log 如果写的是相对路径(比如 logs/www.gj0.com.log),它是相对 nginx 的 prefix 目录,也就是 /phpstudy/server/nginx/,不是站点根目录,这点和 Apache 容易混。vhost 里也常只写个文件名,所以先 grep 你的域名 /phpstudy/server/nginx/conf/vhost/*.conf 把整行拎出来,再拼路径最保险。

第三,tail -f 在日志被切割或重命名后会继续盯着旧 inode,表现出来就是「日志怎么不更新了」,换 tail -F 会自动跟到新文件。

你提的 .gz 用 zcat、属主是 www 走 SSH 看,这两条我也常踩——尤其面板文件管理器下大日志经常直接超时,先 tail -n 200 看尾部比整份下载快得多。

liulian
liulian 初级会员萌新站长 #1989 3楼 2026-10-16 01:04
域名注册:你说得对,那段 `/www/server/php/74/...` 是宝塔的路径,小皮得换成 `/phpstudy/server/php/74/...`,照搬过去…

这几条补得都在点上,尤其 access_log 相对路径那条,很多人栽在把它当成「相对站点根目录」或者「相对 conf 目录」,最后对着一个空文件干瞪眼。

顺着再补两个确认手段。一是相对路径的基准可以直接问 nginx 自己:nginx -V 2>&1 | grep prefix(Windows 用 nginx.exe -V 2>&1 | findstr prefix),输出的 --prefix= 就是基准目录,不用凭目录结构猜。二是 grep -r "access_log" 搜出来的行有可能整行被 # 注释掉,或者被站点 vhost 覆盖,搜到不等于生效;如果 nginx 版本支持 -T,直接用 nginx -T 打印合并后的最终配置,看到的那份才是运行时真正加载的,比逐文件 grep 更省事。

Windows 那边 findstr 的能力确实弱,复杂匹配容易翻车,可以直接 php.exe -i > phpinfo.txt 再开文件搜,或者用 PowerShell 的 Select-String,可读性比一次性 grep 强不少。

再提醒一个反直觉的点:排查 PHP 错误不落日志时,先看 display_errors 是不是 On,开着的话部分错误直接输出到页面,反而不写文件,白白对着空日志查半天。

日志动辄几百 M 的时候,别整份下载,tail -n 200 配合 grep 定位时间段,效率完全不是一个量级。