1 votes

Blocage de la mise à jour de la version de PHP sur l'hôte local Mojave

J'essaie de faire fonctionner PHP7.2 sur localhost, mais phpinfo() continue de dire que 7.1.19 est en place alors que ~php -v me dit que PHP7.2.18 est en place.

Si je lance ~php -v, il est indiqué :

PHP 7.2.18 (cli) (construit le : 2 mai 2019 13:03:01) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies avec Zend OPcache v7.2.18, Copyright (c) 1999-2018, par Zend Technologies

~echo $PATH

/usr/local/opt/php@7.2/sbin:/usr/local/opt/php@7.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Applications/VMware Fusion.app/Contents/Public:/opt/X11/bin

J'ai installé PHP7.2 via brew dans

php@7.2 pwd
/usr/local/opt/php@7.2

Je m'attends à obtenir sur l'hôte local PHP 7.2.18 en place.

MISE À JOUR

J'ai suivi les instructions du lien mentionné par @miken32 ( Comment utiliser le logiciel php installé par Brew ? )

Modification de httpd.conf dans le dossier /etc/apache2

#LoadModule php7_module libexec/apache2/libphp7.so
LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so

Si je décommente la première ligne et commente la seconde, je peux lancer phpinfo() depuis localhost, mais il indique qu'il s'agit de PHP 7.1.19 et de php -v dit 7.2.18

Si je commente la première ligne et décommente la seconde, localhost ne démarre pas et php -v dit 7.2.18

J'ai également suivi ces étapes, mais sans succès.

$ brew update php // get the latest homebrew php packages
$ brew install php@7.2
$ brew link php@7.2 // create an alias to this keg-only version; see comments output during installation
$ echo 'export PATH="/usr/local/opt/php@7.2/bin:$PATH"' >> ~/.bash_profile // add the alias to your path; see comments output during installation
$ source ~/.bash_profile // reload .bash_profile to use the new settings immediately
$ sudo apachectl restart

J'ai également essayé l'infusion link php71 --force mais cela n'a pas aidé non plus.

Il semble donc que le serveur web ne démarre pas lorsque je change de ligne httpd.conf

Y a-t-il des mesures à prendre pour lancer la version 7.2.18 ?

MISE À JOUR 2

  apache2 sudo apachectl -t  

httpd : Erreur de syntaxe à la ligne 178 de /private/etc/apache2/httpd.conf : Cannot load /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so into serveur : dlopen(/usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so, 10) : aucune image appropriée n'a été trouvée. Did trouvé : \n\t /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so : code signature dans (/usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so) n'est pas valide pour une utilisation dans un processus utilisant Library Validation : le fichier mappé n'a pas de cdhash, complètement non signé ? Le code doit être au moins signé de manière ad hoc. signé. \n\t /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so : stat() a échoué avec errno=22

La ligne 178 dit :

L /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so

Il faut y jeter un coup d'œil. Quelque part sur SO, dans un ancien message, il a été suggéré de vérifier s'il y avait des caractères "étranges" qui pourraient causer l'erreur. J'ai vérifié et le seul caractère étrange est '@'. Cependant, il s'agit de l'installation prête à l'emploi de Brew.

0voto

Jose Chavez Points 645

Vous essayez d'utiliser le module PHP de HomeBrew avec le serveur web Apache fourni par Apple. Cette configuration n'est pas prise en charge par Mojave.

Cela ne fonctionne pas parce que MacOS essaie de valider que votre logiciel est correctement signé (c'est-à-dire qu'il n'a pas été altéré) - et il échoue à cette vérification après que vous ayez changé les binaires qui seront chargés dans le système. Vous pouvez résoudre ce problème en désactivant SIP (System Integrity Protection) - mais c'est une très mauvaise idée, car cela désactiverait également la protection de vos autres programmes.

La bonne façon de procéder est de ne plus utiliser le serveur web Apache intégré et d'utiliser un autre serveur web. La transition la plus simple consiste à utiliser Apache fourni par HomeBrew.

Vous pouvez le faire en installant d'abord Apache à partir de HomeBrew :

brew install httpd

Empêchez ensuite MacOS de lancer l'Apache fourni par Apple au démarrage :

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

Assurez-vous que la nouvelle ligne du module php que vous avez insérée est maintenant pas commenté, et l'ancien est - c'est-à-dire qu'il doit ressembler à ceci :

#LoadModule php7_module libexec/apache2/libphp7.so
LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so

Démarrez ensuite la nouvelle installation du serveur web Apache :

brew services restart httpd

En fonction de vos paramètres, vous pourrez alors vous connecter avec votre navigateur à localhost:80 ou localhost:8080 pour afficher votre site.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X