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
插件。
请按照链接安装此插件:-
为macOS
https://formulae.brew.sh/cask/wkhtmltopdf
sudo ln -s /usr/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf
为LinuxOS
https://computingforgeeks.com/install-wkhtmltopdf-on-ubuntu-debian-linux/
sudo ln -s /usr/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf
希望这对以后的努力有所帮助。
我在 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
插件。
请按照链接安装此插件:-
为macOS
https://formulae.brew.sh/cask/wkhtmltopdf
sudo ln -s /usr/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf
为LinuxOS
https://computingforgeeks.com/install-wkhtmltopdf-on-ubuntu-debian-linux/
sudo ln -s /usr/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf
希望这对以后的努力有所帮助。