2011-10-18 14 views
7

Mam dziwny problem z php 5.3.6 i ImageMagick (linia poleceń) przy użyciu MAMP (i Macports też .. Próbowałem obu) na OS X.ImageMagick działa w linii poleceń, ale gdy exec() w php zwróci 5 z "niekompatybilną wersją biblioteki"

Po uruchomieniu polecenia identyfikacji z CLI działa dobrze. Ale kiedy biegnę dokładnie to samo polecenie, używając exec(), zwraca wartość kodu z 5 i Apache dzienników błędów mam:

dyld: Biblioteka nie załadowany: /opt/local/lib/libfreetype.6. dylib
odwołuje się od:/opt/local/bin/zidentyfikować Przyczyna: Niezgodna wersję biblioteki: zidentyfikować wymaga wersji 14.0.0 lub nowszej, ale libfreetype.6.dylib zapewnia wersji 13.0.0

Eg Polecenie cli to: /opt/local/bin/identify /Users/leonardteo/Documents/1.jpg

Działa to dobrze po uruchomieniu z wiersza poleceń. Kiedy wykonywane z PHP:

exec("/opt/local/bin/identify /Users/leonardteo/Documents/1.jpg", $output, $return);

$return jest 5

$output ma nic

Sprawdzanie logów apache daje powyższą kwestię z libfreetype.

Zainstalowałem ImageMagick za pomocą Macports. Próbowałem także ręczną kompilację ze źródła i działającą identyfikację od /usr/local/bin/identify i otrzymuję ten sam wynik. Próbowałem też uruchomić PHP z Macports zamiast MAMP i otrzymałem ten sam wynik.

Czy ktoś mógłby pomóc rzucić światło na to?

+0

PHP w jakiś sposób wykonuje inną kopię tej biblioteki. Sprawdź ścieżki, upewnij się, że nie masz wersji powodujących konflikt. – Brad

+0

CLI php zwykle ma oddzielny plik .ini z SAPI php, więc dwa pliki .ini mogą potencjalnie ładować różne wersje biblioteki. –

+0

@Marc B: To nie jest problem między uruchomieniem php na cli i php poprzez Apache. Jest pomiędzy rzeczywistym poleceniem cli w powłoce basha i wykonywaniem tego samego polecenia przez PHP. –

Odpowiedz

17

Edycja tego pliku:

/Programy/mA/Library/bin/envvars

Wykomentuj następujące linie:

DYLD_LIBRARY_PATH = "/ Applications/mA/Biblioteka/lib: $ DYLD_LIBRARY_PATH "

eksport DYLD_LIBRARY_PATH

+0

Miło, inaczej byłoby po prostu zmienić instancję serwera na XAMPP, która działa po wyjęciu z pudełka http://tekkie.flashbit.net/developer-tools/workaround-for-imagemagick-convert-returning-5 –

+0

Mam nie mam pojęcia, dlaczego to zadziałało ... ale tak się stało. Dzięki! – Jonathan

+0

Thx dużo !!! Przez kilka godzin starał się znaleźć powód, dla którego to nie zadziałało. Na szczęście StackOverflow i Ty, drogi panie, znów uratowali mi dupę;) – maddob