php模块:无法打开共享对象文件:没有这样的文件或目录

时间:2015-10-06 16:18:51

标签: php makefile ld saxon php-extension

我正在尝试使用它的PHP模块在我的服务器上安装Saxon-C XSLT解析器,如下所述: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/

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

我已经检查了以下主题(以及更多内容),这对我无能为力:

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

提前多多感谢并祝福。

3 个答案:

答案 0 :(得分:1)

troubleshooting指南提供了一些有关此问题的提示:

运行以下命令应解决错误:“$ sudo ldconfig”。或者,为java虚拟机创建一个符号链接。这不是安装/编译所必需的,但它是PHP代码所必需的。以下应解决64位计算机上的问题:

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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