【问题标题】:Heroku and wicked-pdf --- libwkhtmltox.so.0 No such fileHeroku 和 wicked-pdf --- libwkhtmltox.so.0 没有这样的文件
【发布时间】:2015-03-31 12:07:07
【问题描述】:

我已在我的 Rails 应用程序本地安装了 wicked_pdf,它正在生成 pdf。

当我将它推送到 Heroku 并尝试生成 pdf 时,我得到:

命令错误:/app/bin/wkhtmltopdf:加载共享时出错 库:libwkhtmltox.so.0:无法打开共享对象文件:没有这样的 文件或目录

我正在运行 Arch。 wkhtmltopdf 是使用 pacman 安装的,并在 /usr/bin/wkhtmltopdf 和 /usr/lib64/libwkhtmltox.so.0 中生成条目

wkhtmltopdf 被复制到 my_rails_app/bin/wkhtmltopdf 并且 Heroku 似乎发现它没问题。

libwkhtmltox.so.0 已复制到三个位置,Heroku 仍然找不到它。

  • my_rails_app/bin/libwkhtmltox.so.0
  • my_rails_app/lib/libwkhtmltox.so.0
  • my_rails_app/lib64/libwkhtmltox.so.0

    Heroku 在哪里需要这个文件?

    -- 编辑--

    测试“wkhtmltopdf http://www.google.comgoogle.pdf”在我的本地机器上按预期执行(它会生成一个 pdf 文件)。

    使用“heroku run bash”会打开一个连接到我的 heroku 服务器的命令行;
    % which wkhtmltopdf
    => /app/bin/wkhtmltopdf

    % which libwkhtmltox.so.0
    => /app/bin/libwkhtmltox.so.0

    % wkhtmltopdf http://www.google.comgoogle.pdf
    => wkhtmltopdf:加载共享库时出错:libwkhtmltox.so.0:无法打开共享对象文件:没有这样的文件或目录

  • 【问题讨论】:

      标签: ruby-on-rails heroku wkhtmltopdf wicked-pdf


      【解决方案1】:

      wicked_pdf gem 主要依赖于enter link description here 二进制'wkhtmltopdf'

      在您的本地机器上执行命令 which wkhtmltopdf 。 它会告诉你它所在的路径。 就我而言,它位于/usr/local/bin/wkhtmltopdf

      接下来在您的开发应用程序中,检查 wicked_pdf.rb 您必须已将 :exe_path 定义到上述位置。 你的语法一定是这样的:

      WickedPdf.config = {
        :exe_path => '/usr/local/bin/wkhtmltopdf'
      }
      

      当您移动到二进制以上的 heroku 时,它的路径配置将不起作用。

      这里有两种选择:

      第一种方式:来源:This article.

      在您的应用程序根目录中创建一个 bin 文件夹并将二进制文件放入其中。 您的二进制文件将驻留在:project_root/bin/wkhtmltopdf-amd64

      然后链接到该位置的 :exe_path。

      这可能有效(虽然没有尝试过)。

      缺点:在项目目录中包含二进制文件不是一个好方法。更好的选择是将二进制文件放在 AWS 或任何云服务中并使用路径位置。

      第二种方式:(我已经实现了)

      我避免在 heroku 中使用这个二进制文件,并且没有提供对云服务的任何访问权限。 我使用了 wkhtmltopdf-heroku gem 这个 gem 在内部使用相同的二进制文件(wkhtmltopdf)。 检查此 gem 的 bin 文件夹(包含相同的库)。

      用法: 将以下 gem 添加到 Gemfile。

         gem 'wicked_pdf'
         gem 'wkhtmltopdf-heroku'
      
      
        config/initializers/wicked_pdf.rb
         #comment out all the :exe_path settings. 
         # our application will be using wkhtmltopdf-heroku gem
         #(which will handle the path settings)
      

      其余的 Mime 配置和要求语句仍然有效。

      它确实对我有用。希望对你有帮助:)

      【讨论】:

      • 这些基本上是我遵循的说明。也许我混淆了一些东西,因为它在我的情况下不起作用。还是谢谢。
      • 您遇到什么错误,请告诉我。你错过了一些小配置。
      【解决方案2】:

      这个问题似乎与 Heroku 对容器的使用以及我在移动符号链接而不是实际文件的剪切和粘贴工作有关(见图)。我要感谢 Arch 的仆从,他给了我我需要的指针,但它包括 cmet,暗指我的心智能力大大下降,而且我什至可以安装 Arch 感到惊讶,更不用说在它上面开发了。所以我有点不愿意给他荣誉。

      事实上,有了新信息,我的 google foo 找到了https://github.com/dscout/wkhtmltopdf-buildpack 在删除了我之前的修复尝试和 Arch pacman 下载之后,这个 buildpack 在 ruby​​ gems 和 Arch pacman 失败的地方工作。

      我现在是一个快乐的白痴:-)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-04
        • 2013-07-28
        • 2012-12-13
        • 2011-06-28
        • 1970-01-01
        • 2019-08-10
        • 2021-03-30
        • 1970-01-01
        相关资源
        最近更新 更多