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/

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

我已经检查了以下线程(以及更多),这些线程无法帮助我:

  • https://askubuntu.com/questions/488874/php-startup-unable-to-load-dynamic-library
  • 加载共享库时出错:'libpcreso .so。0:无法打开共享对象文件:没有这样的文件或目录'
  • 加载共享库时出错:'libpcreso .so。0:无法打开共享对象文件:没有这样的文件或目录'
  • PHP5中的
  • 错误无法加载动态库
在尝试了几个小时没有任何进展之后,我真的希望有人能在这里帮助我。也许解决方案很糟糕。我对需要编译的语言没有太多的经验,因此我只能模糊地理解这里发生了什么。

提前表示感谢,并致以最良好的祝愿。

故障排除指南为这个问题提供了一些提示:

执行以下命令应该可以解决这个错误:"$ sudo ldconfig"。或者创建一个到java虚拟机的符号链接。安装/编译时不需要这样做,但是PHP代码需要这样做。下面的命令可以解决64位机器上的问题:

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

或者,也可以链接libjvm。所以在rt/lib/jetjvm目录下。

所以文件必须安装在/usr/lib目录下。我们将在下一个版本中使用环境变量。

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

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