Ubuntu14.04下Facebook PHP WebDriver启动失败求助
解决Facebook PHP WebDriver在Cloud9 Ubuntu 14.04环境中的Session创建失败问题
从你给出的错误日志和Selenium服务日志来看,核心问题在于Selenium无法找到或启动ChromeDriver服务,再加上Cloud9是无图形界面的VDS环境,必须启用浏览器无头模式才能正常运行。下面是一步步的解决方案:
1. 安装Chrome浏览器与对应版本的ChromeDriver
Cloud9默认没有预装Chrome浏览器和ChromeDriver,这是导致Selenium无法创建Chrome会话的主要原因:
步骤1:安装Chromium浏览器(Chrome的开源版本,适合云端环境)
sudo apt-get update sudo apt-get install -y chromium-browser
步骤2:安装匹配版本的ChromeDriver
首先查看你安装的Chromium版本:
chromium-browser --version
比如输出是Chromium 69.0.3497.81 Built on Ubuntu , running on Ubuntu 14.04,就需要下载对应版本的ChromeDriver(Selenium 3.12.0建议搭配ChromeDriver 2.41-2.45版本,可匹配多数Chromium 68-70版本):
# 下载对应版本的ChromeDriver wget https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip unzip chromedriver_linux64.zip # 将ChromeDriver移到系统PATH目录,并赋予执行权限 sudo mv chromedriver /usr/local/bin/ sudo chmod +x /usr/local/bin/chromedriver
验证ChromeDriver是否可用:
chromedriver --version
如果能正常输出版本信息,说明安装成功。
2. 修改PHP代码,启用Chrome无头模式并配置浏览器选项
因为Cloud9没有图形界面,必须启用Chrome的无头模式,同时可以指定浏览器路径确保Selenium能找到它:
use Facebook\WebDriver\Remote\RemoteWebDriver; use Facebook\WebDriver\Remote\DesiredCapabilities; use Facebook\WebDriver\Chrome\ChromeOptions; // 配置Chrome选项 $options = new ChromeOptions(); // 启用无头模式,禁用GPU加速,关闭沙箱(云端环境必需) $options->addArguments([ '--headless', '--disable-gpu', '--no-sandbox', '--window-size=1920,1080' // 设置窗口尺寸,避免部分页面布局异常 ]); // 指定Chromium浏览器的路径(防止Selenium自动检测失败) $options->setBinary('/usr/bin/chromium-browser'); // 整合到Capabilities中 $capabilities = DesiredCapabilities::chrome(); $capabilities->setCapability(ChromeOptions::CAPABILITY, $options); // 创建WebDriver会话 $driver = RemoteWebDriver::create( 'http://localhost:4444/wd/hub', $capabilities );
3. 重启Selenium Server并指定ChromeDriver路径(可选,但更稳妥)
虽然我们已经把ChromeDriver放到了系统PATH中,但有时候Selenium可能还是无法自动检测到,启动Selenium时可以手动指定ChromeDriver路径:
java -jar selenium-server-standalone-3.12.0.jar -Dwebdriver.chrome.driver=/usr/local/bin/chromedriver
错误原因复盘
- Cloud9默认没有预装Chrome浏览器和ChromeDriver,Selenium需要ChromeDriver作为中间件驱动Chrome,找不到它就无法创建会话;
- 云端VDS环境没有图形界面,Chrome必须以无头模式启动,否则会因无法渲染图形而崩溃,导致会话创建失败。
按照上面的步骤操作后,应该就能正常运行Facebook PHP WebDriver的示例代码了。
内容的提问来源于stack exchange,提问作者mr.incredible
相关产品推荐
相关产品推荐

