Sto avendo un bizzarro problema con php 5.3.6 e ImageMagick (riga di comando) usando MAMP (e anche Macports .. Ho provato entrambi) su OS X.ImageMagick funziona in riga di comando ma quando exec() in php restituisce 5 con "incompatible library version"
Quando eseguo il comando di identificazione dalla CLI, funziona correttamente. Ma quando ho eseguito lo stesso comando esatto utilizzando exec()
, restituisce un codice di valore 5
e nei log di errore apache ho:
dyld: Biblioteca non caricato: /opt/local/lib/libfreetype.6. dylib
di riferimento da:/opt/local/bin/identificare Motivo: Incompatibile versione della libreria: identificare richiede la versione 14.0.0 o successiva, ma libfreetype.6.dylib fornisce la versione 13.0.0
Eg Il comando cli è: /opt/local/bin/identify /Users/leonardteo/Documents/1.jpg
Questo funziona perfettamente quando eseguito dalla riga di comando. Quando viene eseguito da PHP:
exec("/opt/local/bin/identify /Users/leonardteo/Documents/1.jpg", $output, $return);
$return
è 5
$output
è nulla
Controllo dei log di Apache dà la questione di cui sopra con libfreetype.
Ho installato ImageMagick utilizzando Macports. Ho anche provato una build manuale dal sorgente e l'identificazione in esecuzione da /usr/local/bin/identify
e ottengo lo stesso risultato. Ho anche provato a eseguire PHP da Macports invece di MAMP e ottengo lo stesso risultato.
Qualcuno potrebbe aiutarmi a far luce su questo?
PHP sta eseguendo una copia diversa di quella libreria, in qualche modo. Controlla i tuoi percorsi, assicurati di non avere versioni in conflitto. – Brad
Il php CLI di solito ha un file .ini separato dal php SAPI, quindi i due .ini possono potenzialmente caricare diverse versioni della libreria. –
@Marc B: Questo non è un problema tra l'esecuzione di php su cli e php tramite Apache. È tra un comando cli reale sulla shell bash e l'esecuzione dello stesso comando tramite PHP. –