前兩天在新系統里面裝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版本差異或者引用關系帶來的復雜度和錯誤會讓你非常頭疼。