wkhtmltoPDF KnpSnappyBundle报错(状态码127):程序路径找不到求助
解决KnpSnappyBundle生成PDF时wkhtmltopdf路径无法识别的问题
错误信息:
退出状态码127,标准错误输出:
sh: 1: /usr/local/bin/wkhtmltopdf: not found
以下是针对该问题的解决方案思路:
1. 确认wkhtmltopdf的实际安装路径
在服务器终端执行命令,查看wkhtmltopdf的真实位置:
which wkhtmltopdf
- 若输出为空,说明wkhtmltopdf未安装,需根据操作系统选择安装方式:
- Ubuntu/Debian:
sudo apt-get install wkhtmltopdf - macOS:
brew install wkhtmltopdf
- Ubuntu/Debian:
- 若输出路径与
.env中配置的/usr/local/bin/wkhtmltopdf不一致,更新.env文件中的WKHTMLTOPDF_PATH为实际路径。
2. 检查二进制文件的执行权限
确保web服务器用户(如Ubuntu下的www-data)拥有wkhtmltopdf的执行权限:
ls -l /usr/local/bin/wkhtmltopdf
若权限不足,执行命令添加执行权限:
sudo chmod +x /usr/local/bin/wkhtmltopdf
3. 验证Symfony环境变量与缓存
- 确保
.env文件中的环境变量已正确加载,执行缓存清理命令:
php bin/console cache:clear --env=prod
- 可临时在
knp_snappy.yaml中直接使用绝对路径测试,排除环境变量加载问题:
knp_snappy: pdf: enabled: true binary: '/usr/bin/wkhtmltopdf' # 替换为实际路径 options: []
4. 检查wkhtmltopdf依赖库
wkhtmltopdf依赖部分系统库,Linux环境下若缺失会导致无法运行,可安装以下依赖:
sudo apt-get install libxrender1 libfontconfig1 libxext6
附用户提供的配置代码
knp_snappy.yaml
knp_snappy: pdf: enabled: true binary: '%env(WKHTMLTOPDF_PATH)%' options: [] image: enabled: true binary: '%env(WKHTMLTOIMAGE_PATH)%' options: []
.env
###> knplabs/knp-snappy-bundle ### WKHTMLTOPDF_PATH=/usr/local/bin/wkhtmltopdf WKHTMLTOIMAGE_PATH=/usr/local/bin/wkhtmltoimage ###< knplabs/knp-snappy-bundle ###
Controller代码
/** * @Route("/pdf-snappy", name="generate_pdf") */ public function snappy(PDF $pdf,UserActivityRepository $userActivityRepository, TestimonyViewRepository $testimonyViewRepository) { $html = $this->renderView('Modules/PDF/test.html.twig'); $pdf->setOption('page-size','A4'); $pdf->setOption('orientation', 'Landscape'); return new Response( $pdf->getOutputFromHtml($html), 200, array( 'Content-Type' => 'application/pdf', 'Content-Disposition' => 'inline; filename="' . 'test' . '.pdf"' ) ); }
内容的提问来源于stack exchange,提问作者Clément Lehuede
相关产品推荐
相关产品推荐

