KnpSnappyBundle 退出状态代码“127”表示出了点问题:

KnpSnappyBundle The exit status code '127' says something went wrong:

我在 knpSnappyBundle 上遇到这个错误,我正在尝试生成一个 pdf,然后通过电子邮件发送它。

我的配置是这样的:

knp_snappy:
pdf:
    enabled:    true
    binary:     \vendor\h4cc\bin\wkhtmltopdf-amd64\bin\wkhtmltopdf-amd64
    options:    []

然后是我的控制器:

$html = $this->render('AppUserBundle:Emails:envoi-export.html.twig', [
                                      'pointagesList' => $pointagesList,
                                      'user'          => $user,
                                      'date'          => new \DateTime()
                                  ]);
  $filename = sprintf('test-%s.pdf', date('Y-m-d'));

  return new Response(
      $this->get('knp_snappy.pdf')->getOutputFromHtml($html),
      200,
      [
          'Content-Type'        => 'application/pdf',
          'Content-Disposition' => sprintf('attachment; filename="%s"', $filename),
      ]
  );

完整错误信息:

The exit status code '127' says something went wrong: stderr: "sh: 1: /usr/local/bin/wkhtmltopdf: not found " stdout: "" command: /usr/local/bin/wkhtmltopdf --lowquality '/tmp/knp_snappy57970542debe22.97700913.html' '/tmp/knp_snappy57970542dec563.25042325.pdf'.

"binary" 链是您计算机的静态路径,您在其中安装了 wkhtmltopdf。如果你通过命令行安装它,它应该是:

/usr/local/bin/wkhtmltopdf

如果您将它安装在您的供应商存储库中,它应该在那里:

/path/to/Symfony/vendor/...

我找到了可行的解决方案。

  • 在供应商 symfony2 中安装 wkhtmltopdf
  • 在虚拟机中安装 wkhtmltopdf
  • 在虚拟机中安装 xvfb
  • 在 usr/local/bin 中创建一个 wkhtmltopdf.sh 文件,其中 wkhtmltopdf 安装有 (xvfb-运行 -a -s "-screen 0 640x480x16" wkhtmltopdf --dpi 150 --缩放 0.6 "$@")
  • 在您的 config.yml 中使用适当的路径,例如 /usr/local/bin/wkhtmltopdf.sh

希望对大家有所帮助

在尝试解决同样的问题时,我注意到另一个关于此主题的 post 需要在二进制位置指定根目录。添加 %kernel.root_dir% 为我解决了这个错误。试试这个:

binary:     %kernel.root_dir%/../vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64

我解决了问题,这是因为系统没有安装 wkhtmltopdf 插件。 请按照链接安装此插件:-

希望这对以后的努力有所帮助。