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
- Error while loading shared libraries: 'libpcre.so.0: cannot open shared object file: No such file or directory'
- Error while loading shared libraries: 'libpcre.so.0: cannot open shared object file: No such file or directory'
- Error In PHP5 ..Unable to load dynamic library
我真的希望在尝试几个小时后没有任何进展,有人可以帮助我。也许解决方案很垃圾。我对必须编译的语言没有太多经验,因此我只能模糊地理解这里发生了什么。
提前致谢并致以最良好的祝愿。
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 并从那里编译 - 现在它可以工作了。
我正在尝试在我的服务器上安装 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
- Error while loading shared libraries: 'libpcre.so.0: cannot open shared object file: No such file or directory'
- Error while loading shared libraries: 'libpcre.so.0: cannot open shared object file: No such file or directory'
- Error In PHP5 ..Unable to load dynamic library
我真的希望在尝试几个小时后没有任何进展,有人可以帮助我。也许解决方案很垃圾。我对必须编译的语言没有太多经验,因此我只能模糊地理解这里发生了什么。
提前致谢并致以最良好的祝愿。
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 并从那里编译 - 现在它可以工作了。