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

如何通过PHP+Bash运行Google Lighthouse并解决Chrome连接报错

方案可行性结论

PHP结合Bash调用Google Lighthouse是完全可落地的方案,你遇到的ECONNREFUSED连接Chrome失败问题,核心原因是Web服务运行环境和你手动SSH登录的Shell环境存在权限、路径、运行上下文的差异,不是方案本身不可行。

报错根因

你通过Putty手动执行脚本时,使用的是登录态的高权限用户,拥有完整的环境变量配置、Chrome沙箱运行权限、正确的工作目录,Chrome可以正常启动;而通过PHP的shell_exec调用时,执行命令的是Web服务的低权限运行用户(通常为www-data/nginx/apache),既没有登录Shell的环境变量初始化,也没有足够权限启动Chrome默认沙箱,还存在相对路径找不到文件的问题,最终导致Chrome启动失败、调试端口未监听,Lighthouse自然会报连接拒绝错误。

分步修复方案
  • 第一步:修正Lighthouse启动参数,适配低权限运行环境
    编辑rex.sh,给Chrome添加低权限环境必需的启动参数,解决沙箱权限不足、共享内存不足的问题,脚本里所有路径都要写绝对路径,不要用./开头的相对路径——Web执行Shell时的工作目录不是你存放脚本的目录,相对路径会直接找不到文件。修改后的参考脚本如下:
    #!/bin/bash
    SITE=$1
    VALUE=$(echo "$SITE" | awk -F'//' '{print $2}')
    # 注意替换为你自己的lighthouse、Chrome的绝对路径,可通过SSH执行`which lighthouse`、`which google-chrome`获取
    /usr/local/bin/lighthouse "$SITE" \
      --chrome-path=/usr/bin/google-chrome \
      --chrome-flags="--no-sandbox --headless --disable-gpu --disable-dev-shm-usage" \
      --output html \
      --output-path "/your/site/absolute/path/path/$VALUE.html"
    
  • 第二步:修复PHP脚本的命令重定向逻辑、补全权限
    你当前PHP里的重定向顺序写反了,会导致错误信息无法写入日志,把命令拼接部分修改为:
    <?php
    if(isset($_GET['subject2'])) {
      $text = $_GET['subject2'];
      $text = escapeshellarg($text);
      // 写脚本绝对路径,先传参数,再重定向输出:标准输出追加到日志,标准错误绑定到标准输出
      $command = '/absolute/path/to/rex.sh ' . $text . ' >> /absolute/path/to/path/mylog 2>&1';
      $output = shell_exec($command);
      echo "<pre>$output</pre>";
    }
    ?>
    
    然后给脚本和目录配置Web用户的读写执行权限:
    chmod +x /absolute/path/to/rex.sh
    # 下面的www-data替换为你服务器实际的Web运行用户,输出目录、日志文件都要给该用户权限
    chown -R www-data:www-data /absolute/path/to/path/
    
  • 第三步:加基础校验和安全防护
    • 在bash脚本开头加URL格式校验,只允许http/https开头的合法URL传入,降低注入风险
    • 调用Lighthouse的接口必须加访问鉴权,不要直接暴露在公网,避免被恶意调用打满服务器CPU资源
验证方法

改完之后先手动切换到Web用户测试脚本能不能正常跑,比如执行sudo -u www-data /absolute/path/to/rex.sh https://example.com,如果这条命令能正常生成报告,再通过Web访问调用就不会有问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 08:27:24