我有一個奇怪的問題與PHP 5.3.6和ImageMagick(命令行)使用MAMP(和Macports太..我試了兩種)在OS X.ImageMagick在命令行中工作,但當exec()在PHP它返回5與「不兼容庫版本」
當我從CLI運行標識命令,它工作正常。但是,當我運行使用exec()
完全相同的命令,它會返回5
值代碼和Apache的錯誤日誌我:
使dyld:庫未加載:/opt/local/lib/libfreetype.6。 dylib
從參考中:/ opt/local/bin目錄/查明原因:不兼容 庫版本:找出需要版本14.0.0或更高版本,但 libfreetype.6.dylib提供了版本13.0.0
如 cli命令是: /opt/local/bin/identify /Users/leonardteo/Documents/1.jpg
從命令行執行時,此功能正常。當從PHP執行:
exec("/opt/local/bin/identify /Users/leonardteo/Documents/1.jpg", $output, $return);
$return
是5
$output
什麼
檢查Apache日誌給出了上述問題與libfreetype建立。
我使用Macports安裝了ImageMagick。我也嘗試過從源代碼手動編譯並運行/usr/local/bin/identify
中的標識,我得到了相同的結果。我也嘗試從Macports而不是MAMP運行PHP,並得到相同的結果。
請問有人能幫忙解釋一下嗎?
PHP以某種方式執行該庫的不同副本。檢查你的路徑,確保你沒有衝突的版本。 – Brad
CLI php通常具有SAPI php的獨立.ini文件,因此這兩個.ini文件可能會加載不同版本的庫。 –
@Marc B:這不是通過Apache在cli和php上運行php的問題。它位於bash shell上的實際cli命令之間,並通過PHP執行完全相同的命令。 –