首页 > 解决方案 > 从 PHP 执行 Puppeteer 突然停止工作

问题描述

我们最近没有进行任何升级。

我们正在尝试运行此 javascript 代码 (createpdf.js)

    const puppeteer = require('/home/glossyadmin/node_modules/puppeteer');
    const InvoiceNumber = process.argv[2];
    const PDFdir = __dirname + '/../email/invoice/';

    (async () => {
    const browser = await puppeteer.launch({args: ['--no-sandbox']});
    const page = await browser.newPage();
    await page.goto('http://localhost:8080/admin/ajax/invoice?InvoiceNumber=' + InvoiceNumber + '&Print=Print', {waitUntil: 'networkidle2'});

   await page.pdf({path: PDFdir + InvoiceNumber + '.pdf', format: 'A4'});
   await browser.close();
    })();

我们一直在用这个 PHP 脚本调用上面的代码:

$Vars = json_decode(urldecode(@$argv[1]), true);
$InvoiceNumber = $Vars['InvoiceNumber'];
$createScript = $_SERVER['DOCUMENT_ROOT'] . '/admin/workers/createpdf.js';
exec("node $createScript 2>&1 ".escapeshellarg($InvoiceNumber), $arrayReturn);

它一直在工作,但最近它停止了。代码看起来不错(错误日志中没有 PHP 错误),但它不再调用/执行 createpdf.js 脚本。我们已经验证了节点实际上已安装。

我们尚未升级 PHP、Node 或任何其他更新。我们尝试过更改文件和目录的权限。没有什么变化。在这里把我们的头撞到墙上。

标签: javascriptphpnode.jsexec

解决方案


在继续挖掘并发现越来越多的人遇到这个问题后,几乎没有修复。我在 stackoverflow 上发现了另一个线程,该线程谈到有人升级了他们的 puppeteer 版本,但它突然停止工作。

我们根本没有对 puppeteer、node 或系统进行任何升级,但仍然无法正常工作。我在这个帖子的评论中接受了非常简单的建议:升级 Puppeteer 后 Puppeteer 脚本突然停止工作

删除整个 node_modules 目录并重新安装 puppeteer。
不知道为什么,但它已经奏效了。我希望那里有更多的信息。幸运的是,它是一个快速安装。


推荐阅读