我试图在我的服务器上安装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