通过PHP调用Python Selenium脚本失败(www-data用户权限问题)
解决方案:PHP以www-data身份执行Selenium脚本失败问题
核心问题分析
www-data作为受限系统用户,没有访问/root目录的权限,且Chrome在无头模式下运行需要额外的权限配置,这是导致Session创建失败、DevToolsActivePort文件不存在的主要原因。
1. 修复用户数据目录权限
你的Chrome配置中指定了--user-data-dir=/root/www-temp,www-data无法访问/root目录,必须替换为有权限的目录:
- 创建专属目录并设置权限:
sudo mkdir -p /var/www/chrome-profile sudo chown -R www-data:www-data /var/www/chrome-profile - 修改Python脚本中的参数:
chrome_options.add_argument('--user-data-dir=/var/www/chrome-profile') chrome_options.add_argument('--profile-directory=Default') # 使用默认子目录,确保权限正确
2. 优化Chrome启动参数
针对受限用户,补充并调整参数以提升稳定性:
chrome_options = Options() chrome_options.binary_location = '/usr/bin/google-chrome-stable' chrome_options.add_argument('--headless=new') # 新版无头模式,兼容性更好 chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--disable-extensions') chrome_options.add_argument('--no-sandbox') # 必须保留,绕过沙箱限制 chrome_options.add_argument('--disable-dev-shm-usage') # 避免/dev/shm空间不足 chrome_options.add_argument('--remote-debugging-port=9222') # 替换pipe模式,避免权限冲突
3. 确保ChromeDriver与Chrome版本匹配
自动安装的ChromeDriver可能因www-data环境变量问题无法正常调用,建议手动配置:
- 查看Chrome版本:
google-chrome-stable --version - 下载对应版本的ChromeDriver,放到
/usr/local/bin/并设置权限:sudo chmod +x /usr/local/bin/chromedriver sudo chown www-data:www-data /usr/local/bin/chromedriver - 修改Python代码指定Driver路径:
driver = webdriver.Chrome(service=Service('/usr/local/bin/chromedriver'), options=chrome_options)
4. 验证www-data的Chrome可执行性
先直接测试www-data能否启动Chrome,排除Chrome本身的问题:
sudo -u www-data /usr/bin/google-chrome-stable --headless=new --no-sandbox --disable-dev-shm-usage --dump-dom https://google.com
如果命令能输出HTML,说明Chrome正常,问题在Selenium配置;若报错,检查Chrome是否完整安装,或给www-data添加必要的系统权限。
5. 优化PHP执行命令
使用escapeshellarg单独处理参数,避免引号转义问题,同时捕获输出便于调试:
$command = 'python3 lms_dodawanie_komputera.py edit ' . escapeshellarg($cust_id) . ' ' . escapeshellarg("haslo"); // 捕获执行输出和返回码 $output = []; $return_var = 0; exec($command, $output, $return_var); // 调试时打印输出,上线后移除 var_dump($output, $return_var);
内容的提问来源于stack exchange,提问作者Marek
相关产品推荐
相关产品推荐

