2011-10-18 40 views
7

我有一個奇怪的問題與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);

$return5

$output什麼

檢查Apache日誌給出了上述問題與libfreetype建立。

我使用Macports安裝了ImageMagick。我也嘗試過從源代碼手動編譯並運行/usr/local/bin/identify中的標識,我得到了相同的結果。我也嘗試從Macports而不是MAMP運行PHP,並得到相同的結果。

請問有人能幫忙解釋一下嗎?

+0

PHP以某種方式執行該庫的不同副本。檢查你的路徑,確保你沒有衝突的版本。 – Brad

+0

CLI php通常具有SAPI php的獨立.ini文件,因此這兩個.ini文件可能會加載不同版本的庫。 –

+0

@Marc B:這不是通過Apache在cli和php上運行php的問題。它位於bash shell上的實際cli命令之間,並通過PHP執行完全相同的命令。 –

回答

17

編輯這個文件:

/應用/甲基苯丙胺/庫/斌/ envvars中

註釋掉以下行:

DYLD_LIBRARY_PATH =「/應用程序/ MAMP/Library/lib:$ DYLD_LIBRARY_PATH「

export DYLD_LIBRARY_PATH

+0

不錯,另一種方法是將服務器實例切換到開箱即用的XAMPP http://tekkie.flashbit.net/developer-tools/workaround-for-imagemagick-convert-returning-5 –

+0

我有不知道爲什麼這個工作......但它確實。謝謝! – Jonathan

+0

Thx很多!它試圖在幾個小時內找出爲什麼它不起作用的原因。幸運的是,StackOverflow和你,親愛的先生,再次拯救了我的屁股;) – maddob

相關問題