Laravel生成PDF报错wkhtmltopdf未找到,求服务器配置方案
问题解决:Plesk Onyx服务器上Laravel PDF生成报错
wkhtmltopdf: not found 问题背景
我接手部署了一个运行在Plesk Onyx 17.8.11(操作系统为Ubuntu 18.04.3 LTS)上的Laravel项目,网站大部分功能正常,但文件加载和PDF生成模块异常。当通过队列worker生成PDF时,laravel.log中持续报错:
sh: 1: wkhtmltopdf: not found
错误指向PDF生成逻辑里的异常捕获代码行。我已经通过Composer在项目内和全局完成了wkhtmltopdf的安装,并且将其写入了composer.json,而且这个项目在其他服务器上运行完全正常,因此不想修改所有generatePdf()实例,判断问题出在当前服务器的配置上。
解决方案
安装带patched Qt版本的wkhtmltopdf即可彻底解决该问题,以下是针对Ubuntu 18.04的具体操作步骤:
- 下载适配系统的安装包:
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb - 安装依赖并完成工具安装:
sudo apt-get install -y ./wkhtmltox_0.12.6-1.bionic_amd64.deb - 验证安装结果:
能正常输出版本信息即说明安装成功,此时再触发PDF生成任务即可正常运行。wkhtmltopdf --version
原因分析
通过Composer安装的wkhtmltopdf通常不包含适配服务器环境的patched Qt组件,而Plesk环境对系统级二进制文件的路径、依赖加载有特殊要求,只有通过系统级安装带patched Qt的版本,才能确保Laravel的队列worker可以正确找到并调用该工具。
内容的提问来源于stack exchange,提问作者Pixelprotagonist
相关产品推荐
相关产品推荐

