|-原 Laravel + Puppeteer是在Windows11上成功了,在ubuntu22.04上没成功过
ubuntu22.04上用单独安装google-chrome-stable这个方案
1.注意目录权限
2.Puppeteer ↔ Chrome 版本对齐
npm ls puppeteer
查看puppeteer版本
然后去https://github.com/puppeteer/puppeteer/releases
查看对应要求的chrome版本
查看已经安装的google-chrome-stable版本
google-chrome-stable --version
另外目录说明
node_modules/
├── puppeteer/ ✅ CLI 工具(npx puppeteer browsers install)
└── puppeteer-core/ ✅ Laravel / Node 代码实际在用
如果错误没在前端显示,查看laravel的日志文件。
另外Linux和Windows上运行的命令是不同的
Linux上是
$cmd = 'HOME=' . escapeshellarg(base_path('.chrome-home'))." {$node_path} {$script} {$id} {$saveDir}{$redirect}";
在项目跟目录下,创建.chrome-home目录
项目根目录创建.chrome-home的命令
标准命令(Ubuntu + 宝塔)
mkdir -p /www/wwwroot/zimu/.chrome-home/.config
chown -R www:www /www/wwwroot/zimu/.chrome-home
chmod -R 755 /www/wwwroot/zimu/.chrome-home
非宝塔 / 原生 Ubuntu
mkdir -p /www/wwwroot/zimu/.chrome-home/.config
chown -R www-data:www-data /www/wwwroot/zimu/.chrome-home
chmod -R 755 /www/wwwroot/zimu/.chrome-home
if(!function_exists('save_douban_poster')){
function save_douban_poster($douban_movie_id,$node_path)
{
$script = base_path('douban-poster.cjs');
$id = escapeshellarg($douban_movie_id);
$saveDir = escapeshellarg(public_path('images/videos_poster'));
if (!is_dir(public_path('images/videos_poster'))) {
mkdir(public_path('images/videos_poster'), 0755, true);
}
// ✅ Windows 需要 < NUL,Linux 绝对不能加 20260615
$redirect = PHP_OS_FAMI*** === 'Windows' ? ' < NUL 2>&1' : ' 2>&1';
if(PHP_OS_FAMI*** === 'Windows'){
$cmd = "{$node_path} {$script} {$id} {$saveDir}{$redirect}";
}else{
// $cmd = "{$node_path} {$script} {$id} {$saveDir}{$redirect}";
$cmd = 'HOME=' . escapeshellarg(base_path('.chrome-home'))." {$node_path} {$script} {$id} {$saveDir}{$redirect}";
}
$output = shell_exec($cmd);
if (!$output) {
\Log::error('Douban poster failed', ['cmd' => $cmd]);
return null;
}
$result = json_decode($output, true);
if (!$result || empty($result['filename'])) {
\Log::error('Douban poster parse failed', ['output' => $output]);
return null;
}
return '/images/videos_poster/' . $result['filename'];
}
}
啊,这个点你补得太关键了 👍
我刚才没区分清楚平台,现在把话彻底说透:
✅ Windows 11 上 npx puppeteer browsers install chrome非常稳
❌ Ubuntu 22.04 + PHP‑FPM + open_basedir + rootless 用户 = 坑集中营
你现在 Ubuntu 上“从来没成功过”,不是 Chrome 没装上,而是环境组合问题。
✅ 为什么 Windows 成功,Ubuntu 一直失败?
|
Windows 11 |
Ubuntu 22.04 |
|
|---|---|---|
|
Chrome 安装 |
✅ 用户目录 ... 浏览更多内容请先登录。
立即注册 |