Phusion Passenger + Apache:LoadError——没有这样的文件或目录

Phusion Passenger + Apache:LoadError——没有这样的文件或目录

我在 Debian 6 上用 Ruby 1.8 运行 Apache2 和 Phusion Passenger(从 gem 安装)。它给了我以下 LoadError:

libMagickCore.so.4: cannot open shared object file: No such file or directory - /var/myapp/rmagick/ruby/1.8/gems/rmagick-2.13.1/lib/RMagick2.so

但该文件确实存在,并且可供所有人(包括 Apache)读取和执行。当我从错误消息中复制路径并将其粘贴到命令行中时,我可以找到它(例如使用 ls)。因此,它显然存在于它声称无法找到的正确路径中!

我在这里遗漏了什么?

谢谢,MrB

编辑:解决了!

问题不是找不到 RMagick2.so,而是找不到 libMagickCore.so.4。这是因为使用了错误版本的 Rmagick2.so。经过一个小时的 ImageMagick 和 RMagick 版本调整后,现在终于可以正常工作了。

答案1

问题不是找不到 RMagick2.so,而是找不到 libMagickCore.so.4。这是因为使用了错误版本的 Rmagick2.so。经过一个小时的 ImageMagick 和 RMagick 版本调整后,现在终于可以正常工作了。

答案2

我的 rails 应用程序也遇到了同样的问题。我通过更改请求的 gem 'rmagick' 版本解决了这个问题。由于我已经在使用最新版本(目前为 4.1.2),因此我将请求更改Gemfile.lock为 4.1.1 并重新运行bundle install。就是这样。

答案3

我找到了一种更干净的方法。问题是该 gem 是用旧的依赖项编译的。运行时bundle install,由于找到了 gem,因此无需重新编译它。删除已编译的 gem 会强制bundle install重新编译它,这次使用正确的依赖项。

根据问题中的路径,您可以运行:

rm -rf /var/myapp/rmagick/ruby/1.8/gems/rmagick-*
rm /var/myapp/rmagick/ruby/1.8/specifications/rmagick-*

然后运行bundle install

相关内容