Comment spécifier quelle installation d'Apache je veux que mon Mac utilise?

1

Tous mes problèmes provenaient d'essayer d'installer mcrypt pour PHP. La nuit dernière, j’ai cédé et suivi un tutoriel sur la façon de procéder à une nouvelle installation d’apache2 et php5.3.3. Je l'ai fait en utilisant macports

Malheureusement, mcrypt n’a pas été activé pour moi la nuit dernière, même si j’ai été ravi d’avoir exécuté 5.3.3 :)

Le problème est que je me suis réveillé ce matin pour constater que ma version de PHP est revenu à la version 5.3.1, ce qui ne peut que signifier que OS X est revenu à Apache et PHP.

Comment dire à OS X d'utiliser le logiciel que j'ai installé via macports?

(Et ensuite, je poserai une nouvelle question sur la façon d'activer mcrypt)

nb je peux faire charger les macports installés en arrêtant le partage Web actuel dans les préférences système, puis dans le terminal

 sudo /opt/local/apache2/bin/apachectl -k restart
ed209
la source
Vous devez d’abord comprendre ce que "utilisation" signifie.
Ignacio Vazquez-Abrams
actuellement j'ai apache à 2 endroits. / usr / sbin / apachectl et / opt / local / apache2 / bin / apachectl. Mac os x utilise le premier, je veux qu'il utilise le second.
ed209
Pas un utilisateur mac mais sur un linux, je voudrais jeter un oeil autour de /etc/init.dpo Quelque part, il y a probablement une ligne qui commence / appelle /usr/sbin/apachectl. Commentez cela et remplacez-le par l'appel à apache2.
Nifle
Les Mac n'ont pas /etc/init.d
Doug Harris

Réponses:

5

Ce n'est pas tellement que votre version d'Apache / PHP a été annulée - c'est simplement la mauvaise version qui est chargée.

Si vous avez activé le partage Web de Mac OS X, il activera automatiquement la version d'Apache et PHP fournie par Apple à l'aide de LaunchDaemon org.apache.httpd.plistdans /System/Library/LaunchDaemons(cette option remplacera la version de MacPorts). Vous voudrez désactiver ceci en désactivant le partage Web dans la sous-fenêtre des préférences de partage ou en le lançant sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist.

Lorsque vous avez installé Apache pour MacPorts, il a installé un LaunchDaemon dans /Library/LaunchDaemonslequel s’il est activé, la version MacPorts de Apache démarrera automatiquement. Pour l'activer sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist, vous voilà parti pour les courses.

Si vous voulez apachectlredémarrer, assurez-vous d'avoir sélectionné la bonne version. Vous devrez peut-être modifier votre $ PATH pour avoir /opt/local/apache2/binavant/usr/sbin

Quant à quelle version de PHP est utilisée; sur la ligne de commande, cela dépendra de votre $ PATH, tandis que pour Apache, il est entièrement dans votre configuration de l'emplacement du module libphp5. ( /etc/apache2/pour la version intégrée, /opt/local/apache2/confpour la version installée de MacPorts)

Apple.SE

Chealion
la source
2

Comme Ayaz l'a suggéré, vous devez éditer le plist. Le bon chemin devrait être /System/Library/LaunchDaemons/org.apache.httpd.plist.

Pour vous assurer que vous exécutez correctement apachectl, modifiez la PATHvariable d'environnement dans votre script de démarrage du shell (par exemple ~/.bash_profile, ~/.zshrcou autre) afin que cela /opt/local/apache2/binvienne avant /usr/sbin. En bash, la syntaxe à utiliser pour ajouter le répertoire macports apache est la suivante:

export PATH=/usr/local/apache2/bin:$PATH
Doug Harris
la source
macports a supprimé ce fichier (org.apache.httpd.plist) Je crois
ed209
@ ed209 Macports ne supprime pas / System
Kristen Waite
1

Une autre solution consiste à faire un lien symbolique entre apachectl et / usr / sbin / apachectl

$ su -
# mv /usr/sbin/apachectl /usr/sbin/apachectl.mac_version
# ln -s /opt/local/apache2/bin/apachectl /usr/sbin/apachectl
Ricardo Acuna
la source
0

Pour résoudre votre problème Apache, vous pouvez y jeter un coup d'œil /Library/LaunchDaemons/org.apache.httpd.plistet le modifier à votre guise.

Ayaz
la source
Je n'ai pas ce fichier! Cependant, j'ai org.macports.apache2.plist
ed209
Apple est stocké à /System/Library/LaunchDaemons, /Library/LaunchDaemonsa la version de MacPorts.
Chealion
0

Hmm ... Vous connaissez le partage Web personnel que vous pouvez activer dans Préférences Système -> Partage. Essayez-vous de faire en sorte que cette case à cocher active votre version personnalisée d’Apache au lieu de celle fournie?

Je ne sais pas si c'est possible, mais je ne le recommanderais pas. C'est une meilleure idée de simplement désactiver la version de base et d'utiliser votre version personnalisée séparément.

Vous avez déjà eu l’étape 1, qui consiste à désactiver le serveur par défaut dans les Préférences Système. Pour que la génération personnalisée soit chargée au démarrage, étudiez le fichier /Library/LaunchDaemons/org.apache.httpd.plist que vous avez mentionné. Voir $ man launchctl pour plus d'informations sur l'utilisation de ces fichiers, ainsi que sur ce logiciel très utile appelé Lingon.

Avec ces outils (et peut-être $ ps -ax | grep httpd), vous devriez être en mesure de vous assurer que la version Apache en cours d'exécution correspond à l'installation personnalisée de MacPorts.

Ooh, cela me fait penser à autre chose: Apachectl n'est pas le serveur, c'est simplement un utilitaire que vous utilisez pour contrôler le serveur, httpd. Peut-être que le MacPorts apachectl démarre le httpd fourni? Ou peut-être que le httpd MacPorts utilise le PHP fourni ...

Personnellement, mon approche serait simplement de modifier la version installée d'Apache en mettant à niveau PHP si nécessaire, mais j'espère que vous pourrez en utiliser une partie pour continuer le dépannage.

NRiling
la source
En fin de compte, je viens d’extraire l’apache / php et de lancer la version macports quand j’en ai besoin.
ed209