使用wkhtmltopdf静态二进制文件时找不到libjpeg.so.8

Mer*_*ity 6 php apache error-handling heroku wkhtmltopdf

我使用wkhtml2pdf生成pdf文件,本地二进制文件工作正常,但我不知道为什么我在部署到heroku时遇到此问题.我收到这个错误

退出状态代码'127'表示出错了:stderr:"/ app/vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64:加载共享库时出错:libjpeg.so.8:无法打开共享对象文件:没有这样的文件或目录"stdout:""

我的composer.json包含了我需要的这3个文件

    "h4cc/wkhtmltopdf-amd64": "0.12.x",
    "h4cc/wkhtmltoimage-amd64": "0.12.x",
    "barryvdh/laravel-snappy": "0.1.x"
Run Code Online (Sandbox Code Playgroud)

snappy是处理wkhtml2pdf二进制文件的类.

Snappy已正确配置为从vendor文件夹加载二进制文件

    'pdf' => array(
    'enabled' => true,
    'binary' => base_path('vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64'),
    'options' => array(),
),
'image' => array(
    'enabled' => true,
    'binary' => base_path('vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64'),
    'options' => array(),
),
Run Code Online (Sandbox Code Playgroud)

但问题是,当我试图生成PDF,在那一刻我打电话wkhtml2pdf它具有约libjpeg.so.8的错误是什么我一无所知停止.

小智 2

1)找到“缺失的库:

locate libjpeg.so.8
Run Code Online (Sandbox Code Playgroud)

2)尝试在静态二进制文件上运行 strace 并检查日志,在日志中查找丢失的库:

strace /app/vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64
Run Code Online (Sandbox Code Playgroud)

当你找到它在哪里寻找它之后,你可以简单地将静态二进制文件放在那里,它应该开始工作......

我知道这不是一个“好的”解决方案,但是对于特定的、难以找到的库/二进制文件,这是让它们工作的唯一方法......