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

Ubuntu下PHP exec执行Selenium Node命令失败求助

排查PHP exec()无法启动Selenium Node的问题

第一步:捕获执行错误信息

你当前把输出直接丢去/dev/null,完全看不到失败原因。先修改代码把日志留存下来:

<?php
$cmd = "java -jar /var/www/html/selenium-drivers/selenium-server-4.14.1.jar node --port 5555 --selenium-manager true";
// 把标准输出和错误输出都写入日志文件
exec($cmd . " > /var/www/html/selenium-node.log 2>&1 &");
?>

查看/var/www/html/selenium-node.log,这里会直接显示执行失败的具体原因,是最有效的排查依据。

常见排查方向

  • 端口占用:执行ss -tulpn | grep 5555检查5555端口是否被其他进程占用。如果被占用,换个端口(比如5556)重试。
  • Selenium Manager驱动下载问题:--selenium-manager true会自动下载浏览器驱动,但运行PHP的用户(通常是www-data)可能没有下载权限,或者服务器网络无法访问驱动镜像源。可以手动下载对应浏览器的驱动(如ChromeDriver、GeckoDriver),放到/var/www/html/selenium-drivers/目录,然后修改命令指定驱动路径:
    $cmd = "java -jar /var/www/html/selenium-drivers/selenium-server-4.14.1.jar node --port 5555 --driver-path /var/www/html/selenium-drivers/";
    
  • Java环境变量缺失:虽然Hub能启动,但Node命令可能因环境变量差异失败。直接指定Java绝对路径避免问题:
    $cmd = "/usr/bin/java -jar /var/www/html/selenium-drivers/selenium-server-4.14.1.jar node --port 5555 --selenium-manager true";
    
  • 权限细节:检查/var/www/html/selenium-drivers/目录、jar文件及手动下载的驱动是否给www-data用户赋予了可读/可执行权限,比如执行chmod +x /var/www/html/selenium-drivers/chromedriver给驱动加执行权限。
  • 后台进程稳定性:PHP脚本结束后可能会终止exec启动的后台进程,用nohup加固后台运行:
    $cmd = "nohup /usr/bin/java -jar /var/www/html/selenium-drivers/selenium-server-4.14.1.jar node --port 5555 --selenium-manager true > /var/www/html/selenium-node.log 2>&1 &";
    exec($cmd);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:15:10