【问题标题】:Executing Puppeteer from PHP suddenly stopped working从 PHP 执行 Puppeteer 突然停止工作
【发布时间】:2019-09-22 06:36:40
【问题描述】:

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

我们正在尝试运行这个 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 或任何其他更新。我们尝试过更改文件和目录的权限。没有什么变化。在这里把我们的头撞到墙上。

【问题讨论】:

  • 节点日志中没有节点错误?
  • 我们在 Apache 中运行节点,所以我们没有特定的节点日志。据我所知。 Apache2/error.log 中没有显示其他节点特定错误
  • 节点有控制台输出

标签: javascript php node.js exec


【解决方案1】:

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

我们根本没有对 puppeteer、node 或系统进行任何升级,但仍然无法正常工作。我在这个帖子的 cmets 中接受了非常简单的建议:Puppeteer script suddenly stopped working after upgrading Puppeteer

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 2021-02-01
    • 2016-12-29
    • 2018-05-09
    相关资源
    最近更新 更多