web-dev-qa-db-fra.com

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

J'essaie de passer à php7 que j'ai installé via homebrew.

Dans l'interface de ligne de commande, php -v renvoie 

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 affiche un problème de chargement de page, et je ne peux pas voir un hôte local/phpinfo.php; si je permute les lignes du module vers php5 cela fonctionne bien.

Voici un Pastebin http://Pastebin.com/950yC7wA de mon Apache2/httpd.conf, je ne sais pas du tout comment y remédier.

  • version osx El Capitan 10.11
25
Arthur

Достоверься что:

  • Вы установили PHP с поддержкой модуля Apache (см.: brew options php71).

    Например. --with-httpd22 или --with-httpd24 включены.

  • Вы следовали инструкциям 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
    
  • Вы перезапустили Apache через Sudo apachectl restart.

Пошаговое руководство см. В: Notes Apache, MySQL et PHP en passant par Homebrew sur macOS Sierra .

Поиск проблемы

  • Vous êtes le premier à donner votre avis!

    tail -f /usr/local/var/log/Apache2/*error*
    

    Затем запустите/перезагрузите сервер.

    Примечание: когда закончите, нажмитеControl-Cвыйти tail.

13
kenorb

Bien que Homebrew soit un excellent outil, il est parfois inutile.

Je mentionne dans mes messages sur L'installation d'Apache, PHP et MySQL sur Mac OS X , OS X est fourni avec Apache et PHP préinstallés. 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 vous recommande d’utiliser PHP OSX . Ils proposent des installations de paquet pour les versions PHP 5.3 à 7.1 (les plus récentes). Il est disponible pour Mac OS 10.6+ (Snow Leopard).

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

Si vous souhaitez un didacticiel plus détaillé, consultez mon article récent sur Mise à jour de PHP sur Mac OS X .

12
Jason McCreary

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

Avec la sortie 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 préparation php70 pour plus de détails.

Essayez de réinstaller avec le drapeau:

brew reinstall php70 --with-Apache
4
Flo Schild

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

httpd: erreur de syntaxe à la ligne 171 du fichier /private/etc/Apache2/httpd.conf: Impossible de charger /usr/local/opt/php70/libexec/Apache2/libphp7.so dans serveur: dlopen (/usr/local/opt/php70/libexec/Apache2/libphp7.so, 10): Symbole non trouvé: _ldap_control_find\n Référencé depuis: /usr/local/opt/php70/libexec/Apache2/libphp7.so\n Attendu dans: /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP\n in /usr/local/opt/php70/libexec/Apache2/libphp7.so

Je peux confirmer cette solution de contournement publiée sur github , l'installation du package sans la prise en charge de LDAP évitera cette erreur:

brew reinstall php70 --without-ldap

3
HPierce

J'ai eu le même problème et il est parti quand j'ai commenté cette ligne dans /etc/Apache2/httpd.conf

LoadModule php5_module libexec/Apache2/libphp5.so
3
dmac

Ce n’est pas une solution directe à votre problème, mais j’ai eu d’innombrables problèmes avec php sous OS X. Plus récemment, je tentais de faire fonctionner les bibliothèques OCI après la mise à niveau vers El Capitan. 

J'ai cessé d'essayer de l'utiliser maintenant et a commencé à utiliser docker pour mon développement. Je trouve cette solution bien meilleure et vous pouvez même configurer plusieurs environnements sur la même base de code, ce qui est très utile pour tester différentes versions.

Docker est très facile à configurer sous OS X et dispose d'une vaste gamme de conteneurs prédéfinis disponibles dans le référentiel. Il vous suffit d'installer et de définir le point de montage dans votre répertoire source et d'utiliser le port auquel vous avez accès. 

3
Ben Cummins

Je découvre aujourd'hui un nouveau chemin pour charger les différentes bibliothèques php dans le fichier httpd.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
vincent

Pour les personnes susceptibles de rencontrer ce problème, assurez-vous de pouvoir redémarrer Apache avec "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
Naresh Dhiman

Je sais que c'est un sujet très ancien, mais lorsque vous mettez à jour PHP, vous devez également mettre à jour Apache Confing - par exemple:

LoadModule php5_module libexec/Apache2/libphp5.so

changer à:

LoadModule php7_module libexec/Apache2/libphp7.so
0
Wordica