php 模块:无法打开共享对象文件:没有那个文件或目录

php module: cannot open shared object file: No such file or directory

我正在尝试在我的服务器上安装 Saxon-C XSLT 解析器及其 PHP 模块,如下所述:http://www.saxonica.com/saxon-c/index.xml。我成功安装它并编译了 PHP 模块。也许你们中的某个人可能有想法,出了什么问题。

启动 apache 时出现以下错误:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/saxon.so' - 
libsaxon.so: cannot open shared object file: No such file or directory in Unknown on line 0

我知道是在搜索LD库。

more /etc/ld.so.conf.d/jetvm.conf
/opt/saxon/rt/lib/amd64
/opt/saxon/rt/lib/amd64/jetvm

tail -n 1 /etc/apache2/envvars
export LD_LIBRARY_PATH=/opt/saxon/rt/lib/amd64:/opt/saxon/rt/lib/amd64/jetvm:$LD_LIBRARY_PATH

echo $LD_LIBRARY_PATH
/opt/saxon/rt/lib/amd64:/opt/saxon/rt/lib/amd64/jetvm/

一切似乎都是对的。我还仔细检查了所有路径是否存在。

我已经检查了以下线程(以及更多),但对我没有帮助:

我真的希望在尝试几个小时后没有任何进展,有人可以帮助我。也许解决方案很垃圾。我对必须编译的语言没有太多经验,因此我只能模糊地理解这里发生了什么。

提前致谢并致以最良好的祝愿。

troubleshooting 指南针对此问题提供了一些提示:

运行 以下命令应该可以解决错误:“$ sudo ldconfig”。或者创建一个 symlink 到 java 虚拟机。这对于 install/compile 不是必需的,但对于 PHP 代码是必需的。以下应该可以解决 64 位计算机上的问题:

ln -s $JAVA_HOME/jre/lib/amd64/server/libjvm.so /lib64/libjvm.so

或者,可以从 rt/lib/jetjvm 目录 link libjvm.so。

libsaxon.so 文件必须安装在 /usr/lib 目录中。 我们将在下一个版本中采取步骤以使用环境变量。

在 Saxon 的开发者之一 ond1 的友好帮助下,我终于找到了解决方案。显然有一些路径是硬编码的,所以你必须忽略安装程序的问题,把文件放在哪里并将它安装到 /usr/lib。

我卸载了以前的安装,安装到 /usr/lib 并从那里编译 - 现在它可以工作了。