这里专门开个帖子用来整理采集遇到的问题

ubuntu 安装 Puppeteer 配合laravel采集

PHPer 2026-06-15 3 0 0

这个问题问得非常关键 👍

Linux 服务器 上跑 Puppeteer,90% 的坑都在“系统依赖”这一步
下面我给你一个清晰、可照抄、不踩坑的说明。

一、Puppeteer 在 Linux 到底缺什么?

Puppeteer 本质 = Chromium 浏览器(无头模式)
Linux 服务器通常 没有桌面环境,所以 Chromium 需要的:
  • 字体
  • 图形库
  • 共享库
  • 沙箱依赖
这些才是你要装的“依赖”

二、不同系统的安装命令(直接复制)

✅ Ubuntu / Debian(最常见)

sudo apt update
sudo apt install -y \
    ca-certificates \
    fonts-liberation \
    libasound2 \
    libatk-bridge2.0-0 \
    libatk1.0-0 \
    libcups2 \
    libdbus-1-3 \
    libdrm2 \
    libgbm1 \
    libgtk-3-0 \
    libnspr4 \
    libnss3 \
    libxcomposite1 \
    libxdamage1 \
    libxfixes3 \
    libxkbcommon0 \
    libxrandr2 \
    libxshmfence1 \
    libatspi2.0-0 \
    libwayland-client0 \
    libwayland-egl1 \
    libepoxy0 \
    libglib2.0-0 \
    wget \
    curl \
    unzip

✅ CentOS / Rocky / AlmaLinux

sudo dnf install -y \
    alsa-lib \
    atk \
    cups-libs \
    dbus-libs \
    gtk3 \
    libXcomposite \
    libXcursor \
    libXdamage \
    libXext \
    libXi \
    libXrandr \
    libXScrnSaver \
    libXtst \
    libX11 \
    libX11-xcb \
    libxcb \
    nss \
    mesa-libgbm \
    wget \
    curl \
    unzip

✅ Alpine(Docker 常用,不推荐新手)

apk add --no-cache \
    chromium \
    nss \
    freetype \
    harfbuzz \
    ttf-freefont

三、Puppeteer 自己的 Chrome(必须装)

进入你的 Laravel 项目目录:
cd your-laravel-project
npm install puppeteer
npx puppeteer browsers install chrome
✅ 这一步 非常关键
否则你会遇到:
Could not find Chrome (ver. 120.xxx)

四、Laravel + Puppeteer 的最小运行参数(防坑)

在 douban-poster.js里 一定要加这两个参数
const browser = await puppeteer.launch({
    headless: 'new',
    args: [
        '--no-sandbox',
        '--disable-setuid-sandbox'
    ]
});
✅ 原因:
  • 服务器一般不用 root 跑桌面
  • 不用 sandbox 会崩

五、验证是否成功(非常重要)

node douban-poster.js https://movie.douban.com/subject/1292874/
✅ 正确输出:
https://img9.doubanio.com/view/photo/l/public/p223...
❌ 如果报错:
  • error while loading shared libraries→ 系统依赖没装全
  • Chrome not found→ Puppeteer Chrome 没装
  • Permission denied→ node 权限问题

六、Docker 用户(如果你以后用)

如果你是用 Laravel Sail / Docker,我可以直接给你 Dockerfile + docker-compose.yml
(Puppeteer + Chrome + Laravel 一条龙)

七、你现在的状态总结 ✅

项目
状态
cURL
❌ 已被豆瓣封杀
PHP
✅ 只负责调度
Node + Puppeteer
✅ 唯一可行
Linux 依赖
✅ 上面已给
保存 JPG
✅ 前面已解决

✅ 下一步我建议你选一个

1️⃣ “给我 Docker + Laravel + Puppeteer 完整配置”
2️⃣ “帮我写成 Laravel Queue Job(异步下载海报)”
3️⃣ “我现在报错 XXX,帮我看日志”

你把服务器系统版本(cat /etc/os-release)贴出来,我可以给你精确到版本的依赖清单。...

立即注册

更新于:2026-06-15 15:34:48
    您需要登录后才可以评论。 立即注册

    Browser was not found at the configured executablePath (/root/.cache/puppeteer/chrome

    Browser was not found at the configured executablePath (/root/.cache/puppeteer/chrome/linux-149.0.7827.22/chrome-linux64/chrome) 一种情况是执行路径的文件不存在,还有就是执行路径的文件不限制执行

    ls ~/.cache/puppeteer/chrome/linux-149.0.7827.22/chrome-linux64/chrome

    /root/.cache/puppeteer/chrome/linux-149.0.7827.22/chrome-linux64/chrome

    说明执行文件存在,在laravel的php的测试文件里用

    dd(

    is_executable('/root/.cache/puppeteer/chrome/linux-149.0.7827.22/chrome-linux64/chrome')

    ); ,运行的报错是

    is_executable(): open_basedir restriction in effect. File(/root/.cache/puppeteer/chrome/linux-149.0.7827.22/chrome-linux64/chrome) is not within the allowed path(s): (/www/wwwroot/zimu/:/tmp/) 说明不允许执行

    [2026-06-15 16:21:52] production.ERROR: Douban poster parse failed {"output":"Error: Browser was not found at the configured executablePath (/root/.cache/puppeteer/chrome/linux-149.0.7827.22/chrome-linux64/chrome)

    at ChromeLauncher.launch (file:///www/wwwroot/zimu/node_modules/puppeteer-core/lib/puppeteer/node/BrowserLauncher.js:60:19)...

    立即注册
    更新于:2026-06-15 16:33:59

    "output":"Error: Failed to launch the browser process: Code: null

    [2026-06-15 16:35:53] production.ERROR: Douban poster parse failed {"output":"Error: Failed to launch the browser process: Code: null

    stderr:

    chrome_crashpad_handler: --database is required

    Try 'chrome_crashpad_handler --help' for more information.

    [68784:68784:0615/163553.338438:ERROR:third_party/crashpad/crashpad/util/linux/socket.cc:120] recvmsg: Connection reset by peer (104)

    TROUBLESHOOTING: https://pptr.dev/troubleshooting

    at ChildProcess.onClose (file:///www/wwwroot/zimu/node_modules/@puppeteer/browsers/lib/launch.js:339:24)

    at ChildProcess.emit (node:events:531:35)

    at ChildProcess._handle.onexit (node:internal/child_process:293:12)

    "}

    [2026-06-15 16:35:53] production.ERROR: Douban poster parse failed {"output":"Error: Failed to launch the browser process: Code: null

    stderr:

    chrome_crashpad_handler: --database is required

    Try 'chrome_crashpad_handler --help' for more information.

    [68784:68784:0615/163553.338438:ERROR:third_party/crashpad/crashpad/util/linux/socket.cc:120] recvmsg: Connection reset by peer (104) ...

    立即注册
    更新于:2026-06-15 16:57:31
    相关内容

    /dev/null || true bad...">ubuntu uninstall_nvidia.sh bad

    nodejs puppeteer 自动化测试和采集的内容整理

    [Bug]: TypeError: page.$x is not a function

    各种采集应用和采集插件的安装和采集代码整理

    PHP Querylist采集插件Puppeteer的安装

    PHP采集页面的四种方法

    python获取完整网页内容(含js动态加载的):selenium+phantomjs

    php-webdriver 配合chromedriver 采集 (Windows系统)(2023年12月)

    推荐项目:Node.js与PHP的完美融合——node-php

    【环境配置】centos安装chrome浏览器

    爬虫进阶路程2——centos安装各个版本chrome

    php开源采集类Snoopy.class.php功能使用介绍与下载地址

    PHP__采集类__Snoopy

    php使用QueryList轻松采集JavaScript动态渲染页面

    PHP使用Browsershot进行网页截图

    使用node.js爬取网页数据(简单粗暴)

    python关键词爬取bing【必应images】高清大图

    php - php HTMLPurifier iframe和Youtube视频

    这里专门开个帖子用来整理采集遇到的问题

    Linux中使用curl命令访问https站点4种常见错误和解决方法

    使用 curl 进行 ssl 认证 -文章是百度搜curl.cainfo找到的

    网上之前找的封装php curl的类,小巧且实用,用了挺久

    采集的时候把目标网页的内容输出到页面调试的问题

    PHP实现抓取百度搜索结果并分析数据结构

    CentOS 8 安装Puppeteer 记录

    windows wamp SSL certificate problem: unable to get local issuer cert...

    安装Puppeteer插件,PHP采集实现抓取百度搜索结果并分析数据结构

    采集时遇到报错,去github.com查资料,遇到Github网站打不开的问题,网上找的...

    PHP采集时报错Failed to launch the browser process puppeteer

    Win7安装nodejs,之后在sublime运行,之后再安装 puppeteer采集网页

    puppeteer爬取豆瓣电影信息

    解决centos运行node项目puppeteer时chrome错误问题

    How to Setup Puppeteer In CentOS 7 用spatie/browsershot成功采集百度...

    cnpm 安装的扩展的路径 不好找,觉得还是用npm安装,用国内的镜像源

    nodejs 报错 Error: EPERM: operation not permitted, mkdir‘xxxxxxxxx...

    新的chrome headless模式 headless=new

    nodejs 报错 Error: Could not find Chrome (ver. 119.0.6045.105). This ...

    Error: Could not find Chrome 运行js脚本直接执行ok,用php的exec执行脚...

    PHP抓取JS渲染后的页面内容

    ubuntu 安装 Puppeteer 配合laravel采集

    Laravel + Puppeteer是在Windows11上成功了,在ubuntu22.04上没成功过

    推荐内容

    真枪实弹,假戏真做,12部具有“实干精神”的电影!

    怎样使用V2Ray代理和SSTap玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩...

    sstap游戏代理教程 从此玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩虹六...

    BT磁力搜索网站汇总和找不到的资源

    什么是磁力链接,您如何使用?

    Z-Library:全球最大的数字图书馆/含打不开的解决方案/镜像

    使用V2Ray的mKCP协议加速游戏

    v2rayN已停止工作