ho w 和 phi x "=10="(在 dokku 上)
How to fix 'Error while loading shared libraries: libpng12.so.0' (on dokku)
我在尝试通过生产中的 pdf_from_url
方法生成 pdf 时遇到了一些问题。
错误如下:
Error: PDF could not be generated!
Command Error: /app/vendor/bundle/ruby/2.5.0/gems/wkhtmltopdf-binary-edge-0.12.5.0/libexec/wkhtmltopdf-linux-amd64: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory
下面的行抛出了上面的错误:
pdf = WickedPdf.new.pdf_from_url("https://google.com", {:temp_path => Rails.root.join('public')})
该错误仅在生产时出现。开发时一切正常。
运行 wkhtmltopdf https://google.com test.pdf
通过服务器上的命令行正常工作。
需要注意的一件事是我的应用程序服务器在 dokku 容器上运行,我对它没有经验。所以,可能是由于 dokku 的文件架构的工作方式导致的错误。
我已经尝试过的:
- 将 wkhtmltopdf 的 gem 从
wkhtmltopdf-binary
更改为 wkhtmltopdf-binary-edge
- 在服务器上手动安装了 libpng12(不是在 dokku 容器上)
我目前使用的是:
wicked_pdf gem 版本:1.1.0
whtmltopdf [提供商 gem]:wkhtmltopdf-binary-edge ~> 0.12.5
platform/distribution 和版本:Dokku 容器 运行 Ubuntu 18.04
对于 ubuntu 18.04 你应该试试
https://github.com/rposborne/wkhtmltopdf-heroku
(即使它说的是 heroku,它应该适用于大多数 ubuntu 18.04 环境)
wkthmltopdf-binary-edge
不能在开发环境之外使用。
如果 heroku gem 不适合您,您可以尝试将 wkhtmltopdf-binary-edge
降级到 0.12.4 或 0.12.3。我相信 0.12.5 二进制文件与 18.04 有一些问题。
我设法通过使用 dokku-apt 插件安装 libpng12 解决了这个问题。
首先,在你的 dokku 容器上安装 dokku-apt 插件:
sudo dokku plugin:install https://github.com/F4-Group/dokku-apt
然后,在您的项目根目录中创建一个名为 apt-packages 的文件,并插入库的名称,例如:
libpng12-0
之后,在您的项目根目录中创建另一个名为 apt-repositories 的文件,并插入以下行来更新您的存储库:(记得留下一个文件末尾的空行)
deb http://security.ubuntu.com/ubuntu xenial-security main
最后,将这些文件提交并部署到您的 dokku 容器中,它应该可以工作了。
我在尝试通过生产中的 pdf_from_url
方法生成 pdf 时遇到了一些问题。
错误如下:
Error: PDF could not be generated!
Command Error: /app/vendor/bundle/ruby/2.5.0/gems/wkhtmltopdf-binary-edge-0.12.5.0/libexec/wkhtmltopdf-linux-amd64: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory
下面的行抛出了上面的错误:
pdf = WickedPdf.new.pdf_from_url("https://google.com", {:temp_path => Rails.root.join('public')})
该错误仅在生产时出现。开发时一切正常。
运行 wkhtmltopdf https://google.com test.pdf
通过服务器上的命令行正常工作。
需要注意的一件事是我的应用程序服务器在 dokku 容器上运行,我对它没有经验。所以,可能是由于 dokku 的文件架构的工作方式导致的错误。
我已经尝试过的:
- 将 wkhtmltopdf 的 gem 从
wkhtmltopdf-binary
更改为wkhtmltopdf-binary-edge
- 在服务器上手动安装了 libpng12(不是在 dokku 容器上)
我目前使用的是:
wicked_pdf gem 版本:1.1.0
whtmltopdf [提供商 gem]:wkhtmltopdf-binary-edge ~> 0.12.5
platform/distribution 和版本:Dokku 容器 运行 Ubuntu 18.04
对于 ubuntu 18.04 你应该试试
https://github.com/rposborne/wkhtmltopdf-heroku
(即使它说的是 heroku,它应该适用于大多数 ubuntu 18.04 环境)
wkthmltopdf-binary-edge
不能在开发环境之外使用。
如果 heroku gem 不适合您,您可以尝试将 wkhtmltopdf-binary-edge
降级到 0.12.4 或 0.12.3。我相信 0.12.5 二进制文件与 18.04 有一些问题。
我设法通过使用 dokku-apt 插件安装 libpng12 解决了这个问题。
首先,在你的 dokku 容器上安装 dokku-apt 插件:
sudo dokku plugin:install https://github.com/F4-Group/dokku-apt
然后,在您的项目根目录中创建一个名为 apt-packages 的文件,并插入库的名称,例如:
libpng12-0
之后,在您的项目根目录中创建另一个名为 apt-repositories 的文件,并插入以下行来更新您的存储库:(记得留下一个文件末尾的空行)
deb http://security.ubuntu.com/ubuntu xenial-security main
最后,将这些文件提交并部署到您的 dokku 容器中,它应该可以工作了。