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?
PHP w jakiś sposób wykonuje inną kopię tej biblioteki. Sprawdź ścieżki, upewnij się, że nie masz wersji powodujących konflikt. – Brad
CLI php zwykle ma oddzielny plik .ini z SAPI php, więc dwa pliki .ini mogą potencjalnie ładować różne wersje biblioteki. –
@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. –