PHP7 installé par Homebrew ne fonctionne pas avec Apache sur macOS

j'essaie de mettre à niveau vers php7 que j'ai installé via homebrew.

Dans la CLI de php -v retourne

PHP 7.0.10 (cli) (built: Aug 21 2016 19:14:33) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

mais pour localhost, firefox apparaît une page de chargement de problème, et je ne peux pas voir un localhost/phpinfo.php; si j'échange les lignes du module vers php5, ça marche.

voici un pastebin http://pastebin.com/950yC7wA de mon apache2 / httpd.conf, Je ne sais pas comment réparer ça.

  • version osx El Capitan 10.11
24
demandé sur kenorb 2016-09-12 20:53:31

9 réponses

Homebrew est un excellent outil, il est parfois inutile.

je mentionne dans mes posts sur installer Apache, PHP, et MySQL sur Mac OS X, OS X est fourni avec Apache et PHP pré-installé. En tant que tel, vous devez simplement les configurer et les activer.

malheureusement, à partir de Mac OS 10.11 ( El Capitan), la version PHP est toujours 5.5. J'imagine que cela va changer avec 10.12 ( Sierra) puisque PHP 5.5 est EOL. Cependant, il ne peut s'agir que de PHP 5.6.

pour installer PHP 7, je recommande PHP OSX. Ils offrent des paquets d'installation pour les versions PHP 5.3 à 7.1 (les plus récentes). Il est disponible pour Mac OS 10.6+ ( Léopard Des Neiges).

Puisqu'il s'agit d'une installation de paquet, cela fonctionne avec L'installation par défaut D'Apache. Vous aurez seulement besoin de mettre à jour votre PATH et modifier leur fichier ini PHP. Les deux sont décrits dans leurs FAQ.

Si vous voulez une étape par étape tutoriel, découvrez mon récent post sur mise à jour de PHP sur Mac OS X.

11
répondu Jason McCreary 2016-09-20 01:06:28

assurez-vous que:

  • vous avez installé PHP avec le support du module Apache (voir: brew options php71).

    E. G. --with-httpd22 ou --with-httpd24 est inclus.

  • Vous avez suivi les instructions de brew info php71

    ==> Caveats
    To enable PHP in Apache add the following to httpd.conf and restart Apache:
        LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
    
        <FilesMatch .php$>
            SetHandler application/x-httpd-php
        </FilesMatch>
    
    Finally, check DirectoryIndex includes index.php
        DirectoryIndex index.php index.html
    
  • vous avez redémarré Apache via sudo apachectl restart.

Si quelque chose ne fonctionne pas, vérifiez les logs via: tail -f /usr/local/var/log/apache2/*error*.

Pour l'étape par étape tutoriel, voir: Setup Apache, MySQL et PHP utilisant Homebrew sur macOS Sierra.

10
répondu kenorb 2017-08-15 14:31:43

si vous utilisez Apache sur OS X Sierra, php7 ne vient plus avec le module apache par défaut.

avec la version de macOS Sierra, Le module Apache n'est plus construit par défaut. Si vous voulez le construire sur votre système vous devez installer php avec l'option --with-apache. Voir les options de brassage php70 pour plus de détails.

Essayez de réinstaller avec le drapeau:

brew reinstall php70 --with-apache
4
répondu Flo-Schield-Bobby 2016-09-26 12:07:09

Exécution $ apachectl -t montrera tous les problèmes avec votre configuration actuelle. Quand j'ai couru, j'ai eu ceci:

httpd: erreur de Syntaxe sur la ligne 171 /private/etc/apache2/httpd.conf: Ne peut pas charger / usr/local/opt/php70/libexec/apache2 / libphp7.so into serveur: dlopen (/usr/local/opt/php70/libexec/apache2 / libphp7.donc, 10): Symbole non trouvé: _ldap_control_find \n référencé d'après: /usr/local/opt/php70/libexec/apache2 / libphp7.on S'attend à ce que: / System/Library/Frameworks / LDAP.cadre / Versions / A / LDAP\n /usr/local/opt/php70/libexec/apache2 / libphp7.so

je peux confirmer cette solution a posté sur github, installer le paquet sans le support LDAP empêchera cette erreur:

brew reinstall php70 --without-ldap

3
répondu HPierce 2016-09-18 19:28:26

pas une solution directe à votre problème, mais j'ai eu d'innombrables problèmes avec php sur OS X. plus récemment, j'ai essayé de faire fonctionner les bibliothèques OCI après la mise à niveau vers El Capitan.

j'ai renoncé à l'utiliser maintenant et a commencé à utiliser docker pour mon développement. Je trouve que c'est une bien meilleure solution et vous pouvez même configurer plusieurs environnements sur la même base de code ce qui est vraiment utile pour tester différentes versions.

Docker est très facile à installer sur OS X, et dispose d'une vaste gamme de pré-conteneurs disponibles dans le dépôt, il vous suffit d'installer et de mettre le point de montage dans votre répertoire source et d'utiliser le port auquel il vous donne accès.

3
répondu Ben Cummins 2016-09-19 23:51:49

j'ai eu le même problème et il s'en alla quand j'ai commenté cette ligne dans /etc/apache2/httpd.conf

LoadModule php5_module libexec/apache2/libphp5.so
3
répondu dmac 2017-04-29 14:18:26

je découvre aujourd'hui un nouveau chemin pour charger les différentes bibliothèques php dans le httpd.fichier conf (/usr/local/etc/httpd / httpd.conf):

### OLD VERSION (NOT WORKING NOW)  ###
#LoadModule php5_module    /usr/local/opt/php56/libexec/apache2/libphp5.so
#LoadModule php7_module    /usr/local/opt/php70/libexec/apache2/libphp7.so
#LoadModule php7_module    /usr/local/opt/php71/libexec/apache2/libphp7.so
#LoadModule php7_module    /usr/local/opt/php72/libexec/apache2/libphp7.so

### NEW VERSION ###
#LoadModule php5_module    /usr/local/opt/php56/lib/httpd/modules/libphp7.so
#LoadModule php7_module    /usr/local/opt/php70/lib/httpd/modules/libphp7.so
#LoadModule php7_module    /usr/local/opt/php71/lib/httpd/modules/libphp7.so
LoadModule php7_module    /usr/local/opt/php72/lib/httpd/modules/libphp7.so
1
répondu vincent 2018-05-17 08:19:33

je sais que C'est un sujet très ancien mais quand vous mettez à jour PHP vous devez aussi mettre à jour Apache confing - par exemple:

LoadModule php5_module libexec/apache2/libphp5.so

remplacer par:

LoadModule php7_module libexec/apache2/libphp7.so
0
répondu Wordica 2017-09-26 19:22:53

pour les personnes qui peuvent éprouver ce problème, assurez-vous que vous êtes en mesure de redémarrer apache en utilisant "apachectl restart". Dans mon cas, je devais d'abord arrêter tous les processus de httpd en utilisant la commande "httpd stop", puis démarrer apache en utilisant "apachectl start".

0
répondu Naresh Dhiman 2018-07-31 13:04:52