You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP错误日志无来源信息,如何定位对应站点及获取更多错误详情?

嘿,这个问题我之前帮不少多站点运维的朋友解决过,咱们一步步来拆解排查,总能找到根源:

1. 给Web服务器日志加「站点标识」——最直接的方法

不管你用的是Apache还是Nginx,默认错误日志大概率没把站点域名写进去,咱们先改配置让日志带上关键信息:

如果你用Apache:

  • 最简单的办法是给每个站点单独配错误日志,这样每个站点的错误会分开记录,再也不用混在一起找:
    <VirtualHost *:80>
        ServerName your-site.com
        ErrorLog /var/log/apache2/your-site.com-error.log
        # 其他原有配置不动
    </VirtualHost>
    
    要是不想单独建日志文件,也可以改全局日志格式,让错误日志强制带上虚拟主机名(就是站点域名):
    ErrorLogFormat "[%t] %v [%l] [pid %P] %F: %E: [client %a] %M"
    
    改完记得重启Apache,之后新产生的错误日志里就会明确标出来是哪个站点的问题了。

如果你用Nginx:

  • 同样,优先给每个站点单独指定错误日志:
    server {
        server_name your-site.com;
        error_log /var/log/nginx/your-site.com-error.log;
        # 其他原有配置不动
    }
    
    嫌麻烦的话就改全局错误日志格式,把$host(站点域名)加进去:
    log_format detailed_error '$time_local $host $remote_addr "$request" $status';
    error_log /var/log/nginx/error.log detailed_error;
    
    重启Nginx后,新的错误条目里就会带上对应的站点名称。
2. 让PHP日志吐更多细节

这个错误提示script not found:<script type="text/javascript"></script>有点奇怪——看起来像是某个请求把这段JS标签当成了要执行的脚本路径。咱们可以临时让PHP记录更完整的错误上下文:

  • 找到你的php.ini,或者站点根目录的.htaccess(Apache)/fastcgi_params(Nginx),加上这些配置:
    error_log = /var/log/php/php-full-error.log
    log_errors_max_len = 0
    error_reporting = E_ALL
    
    这样PHP会把触发错误的脚本路径、调用栈都记下来,你顺着路径就能找到对应的站点了。
3. 直接查访问日志找匹配请求

错误日志里的时间是[05-Apr-2018 14:03:22 UTC],你可以去Web服务器的访问日志里找同一时间点的请求条目——访问日志里一般会有完整的请求URL、站点域名、客户端IP这些信息,直接搜<script type="text/javascript"></script>这个奇怪的路径,就能定位到是哪个站点收到了这个诡异请求:

  • Apache用户可以跑这个命令:
    grep '<script type="text/javascript"></script>' /var/log/apache2/access.log*
    
  • Nginx用户用这个:
    grep '<script type="text/javascript"></script>' /var/log/nginx/access.log*
    

内容的提问来源于stack exchange,提问作者jungalist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:08:32