Problèmes Apache après la mise à niveau vers Yosemite

8

Mon serveur Web Mac ne fonctionnera pas après la mise à niveau vers Yosemite. Lorsque je tape apachectldans Terminal, j'obtiens ceci:

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

Si je tape, sudo apachectl [re]startrien ne se passe, comme s'il était démarré et que je le saisis à nouveau, il indique qu'il est déjà en cours d'exécution. En outre, le volet Préférences de partage Web est installé ( http://clickontyler.com/web-sharing/ ) et lorsque je passe le commutateur de Off à On, il indique toujours qu'il est désactivé, même si le commutateur est en position On .

Quels fichiers voulez-vous / devez-vous voir? Vraiment besoin de résoudre ce problème dès que possible.

Tom Oakley
la source

Réponses:

6

Veuillez également noter que le programme d'installation de Yosemite écrase l'intégralité du fichier /private/etc/apache2/httpd.conf avec le nouveau fichier de configuration Apache 2.4 par défaut.

Par exemple, si des Listendirectives ont été ajoutées, elles auront disparu et devront être ajoutées à nouveau. Par exemple:

Listen 127.0.0.1:81

J'ai trouvé mon ancienne configuration dans le fichier suivant, mais en raison des différences par rapport à 2.2, elle ne devrait probablement pas être copiée directement sur le fichier http.conf:

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

Il existe un guide de mise à niveau sur: http://httpd.apache.org/docs/2.4/upgrading.html

Assurez-vous que tous les fichiers de configuration supplémentaires précédemment inclus sont toujours inclus, puis testez la configuration avec la commande:

sudo apachectl configtest
Otto G
la source
Comment cela répond-il à la question? Vous ne devriez pas avoir à changer le module php que vous chargez après la mise à niveau d'Apache ...
AlxVallejo
8

Le problème se produit car Yosemite installe la dernière version d'Apache (2.4) alors que les versions antérieures de Mac OS X utilisaient Apache version 2.2

De l'erreur, il semble que vous n'utilisiez pas la version standard de PHP fournie par Apple mais une version différente fournie par liip.ch. La suppression du signe # comme suggéré par Nuttyx ci-dessus chargera la version Apple de php (5.5.14). Si vous souhaitez continuer à exécuter la version fournie par liip, vous devrez la réinstaller pour qu'elle se charge correctement dans Apache 2.4. Voir une explication détaillée ici: ( http://blog.liip.ch/archive/2014/06/11/php-osx-available-for-os-x-10-10-yosemite.html )

NB Si vous utilisez des hôtes virtuels, vous devrez probablement modifier quelque peu vos fichiers de configuration. En particulier, vous devrez modifier les éléments suivants:

2.2 configuration:

Order allow,deny
Allow from all

2.4 configuration:

Require all granted
John Dalton
la source
4

Il semble que vous pouvez résoudre ce problème en supprimant le #au début de la ligne suivante dans le /etc/apache2/httpd.conffichier:

LoadModule php5_module libexec/apache2/libphp5.so
NuTTyX
la source
1
Ça l'a fait pour moi!
Matthieu Riegler
1

L'exécution de 'sudo apachectl' sans arguments montre le problème dans les fichiers conf. Dans mon cas, la mise à niveau de php l'a corrigé.

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

Après cela, Apache a de nouveau fonctionné mais j'ai dû reconfigurer les vhosts.

raoulsson
la source
0

Bien que la question ci-dessus ait été répondue, il existe une autre possibilité de la même erreur comme:

/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

Cela peut se produire si vous avez créé un lien symbolique référencé dans le nom ci-dessus et qu'il n'est pas trouvé. Pour résoudre, créez un lien symbolique fournissant le chemin absolu pour le fichier réel et le même pour le nom de fichier de lien symbolique fourni.

Onik
la source