eddik 发表于 2015-8-29 13:28:05

php error while loading shared libraries的解决办法

  前两天在新系统里面装php的时候,由于是直接从成熟的测试机copy过来的php,就直接用了,但是使用内置的dom处理类,domDocument的时候,出现了如下错误:
  ./php: error while loading shared libraries: libmcrypt.so.4: cannot open shared object file: No such file or directory
  
  意思是加载共享库libmcrypt.so.4的时候出错了,找不到该.so文件,实际上有两种方式可以解决此问题,一是用php.ini中配置扩展的方式,这种方式肯定是可以的,不过我没有试成功。。。另外一种就是将该.so文件目录加入到环境变量LD_LIBRARY_PATH中,这里有个问题,比如我的libmcrypt.so.4在如下目录中../local/libmcrypt-2.5.7/lib中,但是我加入LD_LIBRARY_PATH的路径是:
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../local/libmcrypt-2.5.7
  结果在找的时候就找不到了。我没有想到它找的时候是不会去遍历其子目录的。。。这是我犯的一个错误,希望别人不要犯了。
  
  最后,我相信不光是php,其他应用程序或者语言需要这些共享库的时候也会遇到加载库文件找不到的情况,我将其路径直接加入系统环境变量,实际上是简单暴力的解决办法,最好是加到该应用程序自己引用库的目录和配置文件下面去,如果不这么做,当你的应用程序多了,引用的lib多了之后,一些lib版本差异或者引用关系带来的复杂度和错误会让你非常头疼。
页: [1]
查看完整版本: php error while loading shared libraries的解决办法