Problemi di Apache dopo l'aggiornamento a Yosemite


8

Il mio server Web Mac non funzionerà dopo l'aggiornamento a Yosemite. Quando scrivo apachectlin Terminale, ottengo questo:

httpd: Syntax error on line 527 of /private/etc/apache2/httpd.conf: Syntax error on line 8 of /private/etc/apache2/other/+php-osx.conf: Cannot load /usr/local/php5/libphp5.so into server: dlopen(/usr/local/php5/libphp5.so, 10): Symbol not found: _unixd_config\n  Referenced from: /usr/local/php5/libphp5.so\n  Expected in: /usr/sbin/httpd\n in /usr/local/php5/libphp5.so

Se digito sudo apachectl [re]startnon succede nulla, come se fosse avviato e lo digito di nuovo, dice che è già in esecuzione. Inoltre, ho installato il riquadro Preferenze di condivisione Web ( http://clickontyler.com/web-sharing/ ) e quando faccio scorrere l'interruttore da Off a On, continua a dire che è spento, anche se l'interruttore è in posizione On .

Quali file volete / avete bisogno di vedere? Davvero bisogno di risolvere questo al più presto.

Risposte:


6

Si noti inoltre che il programma di installazione di Yosemite sovrascrive l'intero file /private/etc/apache2/httpd.conf con il nuovo file di configurazione predefinito di Apache 2.4.

Ad esempio, se Listensono state aggiunte direttive, queste scompariranno e dovranno essere nuovamente aggiunte. Per esempio:

Listen 127.0.0.1:81

Ho trovato la mia vecchia configurazione nel seguente file, ma a causa delle differenze dalla 2.2, probabilmente non dovrebbe essere copiata direttamente sul file http.conf:

/private/etc/apache2/httpd.conf~previous

C'è una guida all'aggiornamento su: http://httpd.apache.org/docs/2.4/upgrading.html

Assicurarsi che tutti i file di configurazione extra precedentemente inclusi siano ancora inclusi, quindi testare la configurazione con il comando:

sudo apachectl configtest

Come risponde alla domanda? Non dovresti cambiare quale modulo php stai caricando dopo aver aggiornato Apache ...
AlxVallejo

8

Il problema si verifica perché Yosemite installa l'ultima versione di Apache (2.4) mentre le versioni precedenti di Mac OS X utilizzavano Apache versione 2.2

Dall'errore, sembra che tu non stia utilizzando la versione standard di PHP fornita da Apple ma una versione diversa fornita da liip.ch. La rimozione del segno # come suggerito da Nuttyx sopra caricherà la versione Apple di php (5.5.14). Se desideri continuare a eseguire la versione fornita da liip dovrai reinstallarla in modo che si carichi correttamente in Apache 2.4. Vedi una spiegazione dettagliata qui: ( http://blog.liip.ch/archive/2014/06/11/php-osx-available-for-os-x-10-10-yosemite.html )

NB Se si utilizzano host virtuali, sarà probabilmente necessario modificare leggermente i file di configurazione. In particolare dovrai cambiare quanto segue:

2.2 configurazione:

Order allow,deny
Allow from all

2.4 configurazione:

Require all granted

4

Sembra che si può risolvere questo problema rimuovendo l' #al Inizio della la seguente riga nel /etc/apache2/httpd.conffile:

LoadModule php5_module libexec/apache2/libphp5.so

1
Questo l'ha fatto per me!
Matthieu Riegler,

1

L'esecuzione di "sudo apachectl" senza argomenti mostra il problema nei file conf. Nel mio caso l'aggiornamento di php lo ha risolto.

curl -s http://php-osx.liip.ch/install.sh | bash -s 5.6

Successivamente, Apache funziona di nuovo, ma ho dovuto riconfigurare i vhosts.


0

Mentre alla domanda sopra è stata data una risposta, c'è un'altra possibilità dello stesso errore come:

/private/etc/apache2/httpd.conf: Cannot load /usr/libexec/apache2/mod_XYZ.so into server: dlopen(/usr/libexec/apache2/mod_XYZ.so, 10): image not found

Ciò può accadere se hai creato un collegamento simbolico a cui viene fatto riferimento nel nome sopra e che non viene trovato. Per risolvere il problema, creare un collegamento simbolico che fornisca il percorso assoluto per il file effettivo e lo stesso per il nome del file symlink fornito.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.