2015-12-31 14 views
6

ho una nuova installazione di OSX el capitan 10.11.2 ed installato php7 utilizzando homebrew.Now ottenendo seguente errorelibphp7.so richiede la versione 12.0.0 o successiva

comando

sudo apachectl -e info -k restart 

errore

httpd: Syntax error on line 171 of /private/etc/apache2/httpd.conf: 
Cannot load /usr/local/opt/php70/libexec/apache2/libphp7.so into server: dlopen(/usr/local/opt/php70/libexec/apache2/libphp7.so, 10): 
Library not loaded: /usr/local/opt/libxml2/lib/libxml2.2.dylib 
    Referenced from: /usr/local/opt/php70/libexec/apache2/libphp7.so 
    Reason: Incompatible library version: libphp7.so requires version 12.0.0 or later, but libxml2.2.dylib provides version 10.0.0 

Ho cercato su google ma non ho trovato alcuna soluzione specifica.

+1

non è sicuro su osx, ma 'apt-get install libxml2-dev' – hjpotter92

+0

Questa domanda deve essere risolta ... – Jay

+1

Assicurati di eseguire' brew install libxml2 libxslt libiconv'. Sta guardando la versione del sistema. – miken32

risposta

-3

PER FAVORE NON FARE QUESTO !!! LA TUA MIGLIORE SCOMMESSA È REINSTALLARE MAC OS X

OK, ho appena trovato un modo. È kinda hacky, ma funziona.

Quando si tenta di eseguire PHP 7, apache controlla sotto /usr/lib. Per verificare quale versione è attualmente disponibile, è possibile eseguire otool -L /usr/lib/libxml2.2.dylib.

che sarà qualcosa di probabilmente output come questo:

/usr/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.9.0) 

Ma Apache e PHP vogliono versione 12.0.0, quindi cerchiamo di installarlo attraverso homebrew.

brew install libxml2 libxslt libiconv 

Questo installerà libxml a qualcosa di simile /usr/local/Cellar/libxml2/2.9.4/lib. Questa directory conterrà un file chiamato libxml2.2.dylib.

Se si esegue otool -L /usr/local/Cellar/libxml2/2.9.4/lib/libxml2.2.dylib, il risultato sarà:

/usr/local/opt/libxml2/lib/libxml2.2.dylib (compatibility version 12.0.0, current version 12.4.0) 

Quindi questa è la versione di PHP e Apache stanno cercando. Vogliamo spostare questo file su /usr/lib. Ma non così velocemente, abbiamo già un file chiamato libxml2.2.dylib in quella cartella, quindi lascia semplicemente aggiungere l'estensione .bak nel caso in cui ne avessimo bisogno di nuovo.

sudo mv /usr/lib/libxml2.2.dylib /usr/lib/libxml2.2.dylib.bak 

Ora possiamo spostare il file che homebrew ha installato in questa directory.

sudo cp /usr/local/Cellar/libxml2/2.9.4/lib/libxml2.2.dylib /usr/lib 

Questo è tutto! Ora dovresti essere in grado di eseguire sudo apachectl -e info -k restart senza errori e PHP 7 dovrebbe funzionare correttamente.

+0

Non lo raccomanderei.Rinominare il sistema libxml2 non funzionerà a meno che non si sia disabilitato System Integrity Protection e, in ogni caso, è probabile che ciò causi la rottura di alcune applicazioni che sono state distribuite con il sistema operativo. – duskwuff

+0

Ciò interromperà la macchina e imporrà di dover utilizzare l'accesso per utente singolo per la riparazione. ATTENZIONE !! Lo spostamento del file dylib viola le restrizioni PAM e ucciderà sudo e fondamentalmente tutte le funzionalità fino al riavvio e alla correzione come root. – Steve

1

Installare libxml2 con birra,

brew install libxml2 

aggiuntivo seguente riga in ~/.bash_profile

export LIBRARY_PATH=/usr/local/Cellar/libxml2/2.9.4/lib/:$LIBRARY_PATH 

La versione "2.9.4" può essere cambiato in corrente

Problemi correlati