Installer php 8.1 sous Mojave ou Catalina, possible ou non ?

henrif83

Membre confirmé
3 Août 2017
37
10
Bonjour,

Je développe en php avec Apache 2 sur un Mac Mini 2012 (qui accepte Mojave ou Catalina maximum). Actuellement en php7, je cherche à installer php8.1.
Après une rude (!) bataille avec Homebrew (qui annonce ne pas pas supporter Mojave et Catalina), puis MacPorts (plus "léger" et rapide me semble-t-il), puis en compilant les sources fournis par php.net, j'ai obtenu trois versions du module libphp.so pour le serveur Apache.
Mais aucun ne fonctionne, soit Apache plante au lancement, soit Apache se lance mais ne reconnait plus le code php.

D'où ma question : est-ce possible ? ou y-a-t-il une incompatibilité système (librairies trop anciennes) entre 10.14 ou 10.15 et php 8.1 ?
Merci de votre aide :)
 
Bonjour,

Depuis hier, mon sujet a été beaucoup lu, merci , mais visiblement personne n'a de réponse.
;)
Ce n'est pas grave.
Ce matin , j'ai essayé une autre stratégie :
installation de VirtualBox 6.1, création d'une machine virtuelle avec Ubuntu v22.04 et installation de php8.2 selon ce site.
Cela a pris une paire d'heures et au final :
Capture d’écran 2023-03-04 à 11.06.34.png
Comment dire .... peut être que MacOS n'est vraiment plus adapté à héberger un serveur web.
 
Dernière édition par un modérateur:
Bonjour,

Eh bien oui, c'est possible d'installer php8 sous Mojave (et plus récent).
Il me manquait le handler apache qui génère le bon module php8.so.

Voici les installations à faire sous MacPorts :
Bloc de code:
sudo port install php82
sudo port install apache2
sudo port install php82-apache2handler
Pour activer php82-apache2handler, saisir:
Bloc de code:
cd /opt/local/lib/apache2/modules
sudo /opt/local/bin/apxs -a -e -n php mod_php82.so
Ajouter dans /opt/local/etc/apache2/httpd.conf
Bloc de code:
<IfModule php_module>
    DirectoryIndex index.html default.php index.php
    AddHandler application/x-httpd-php .php
</IfModule>
Ajout du module mysql
Bloc de code:
sudo port install php82-mysql
MacPorts installe tout dans /opt . DocumentRoot est "/opt/local/www/apache2/html".
Pour utiliser le dossier Sites du compte utilisateur, dans "/opt/local/etc/apache2/httpd.conf" activer
Bloc de code:
LoadModule userdir_module libexec/apache2/mod_userdir.so

# User home directories
Include etc/apache2/extra/httpd-userdir.conf
ainsi que les "classiques" :
Bloc de code:
LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule include_module libexec/apache2/mod_include.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
Créer "/opt/local/etc/apache2/extra/httpd-userdir.conf.orig"
Bloc de code:
sudo cp /opt/local/etc/apache2/extra/httpd-userdir.conf.orig /opt/local/etc/apache2/extra/httpd-userdir.conf
et l'éditer :
Bloc de code:
UserDir Sites

<Directory "/Users/moncompte/Sites/">
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>
Lancer / arrêter apache par
Bloc de code:
sudo /opt/local/sbin/apachectl start
sudo /opt/local/sbin/apachectl stop
On conserve l'ancien serveur Apache et php7 dans /usr/sbin et /etc. On peut ainsi passer de l'un à l'autre, par exemple avec ces alias
Bloc de code:
alias p7 'sudo /opt/local/sbin/apachectl stop; sudo /usr/sbin/apachectl start'
alias p8 'sudo /usr/sbin/apachectl stop; sudo /opt/local/sbin/apachectl start'
 
J'ai oublié la création du fichier php.ini
Bloc de code:
sudo cp /opt/local/etc/php82/php.ini-development /opt/local/etc/php82/php
# ou /opt/local/etc/php82/php.ini-production (if this is a production server)