J'ai réalisé qu'il y avait un manque de correspondance entre la version PHP signalée par phpinfo()
et php -v
(dans la CLI).
phpinfo(): 5.5.24
php -v: 5.6.9
Je travaille sur un Mac OS X 10.10 (Yosemite) et j'ai installé une bibliothèque ( php-version
) pour essayer de gérer les versions PHP.
Il me rapporte 3 versions différentes installées sur mon ordinateur portable:
5.4.41
5.5.25
* 5.6.9
Je voudrais définir la même version de PHP dans Apache et CLI.
Comment savoir à Apache quelle version PHP utiliser?
J'ai essayé d'écrire cette ligne dans mon httpd.conf
:
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
Ensuite:
sudo apachectl restart
Mais tout cela ne résout pas le problème… Dans mes infos PHP, j'ai encore: 5.5.24
apache-http-server
php
Salvatore Dibenedetto
la source
la source
Réponses:
Quelques problèmes différents se cachent tous sous le concept de confusion de version PHP, alors essayez de traiter chacun d'eux aussi clairement que possible. D'abord ceci:
PHP CLI n'est pas le même que le module PHP Apache.
Comme je l'explique dans la réponse à cette autre question ici , ne paniquez pas! Si vous êtes préoccupé par la version PHP utilisée par votre serveur Apache, la sortie de
phpinfo()
est toujours celle à laquelle vous devez faire attention. Le module PHP Apache et le binaire de ligne de commande PHP sont deux choses différentes qui n'interfèrent pas entre elles.Faites juste attention à la sortie de
phpinfo()
si vous êtes soucieux de définir la bonne version du module PHP dans Apache.Cela dit, vous semblez toujours avoir des problèmes pour charger le bon module PHP dans Apache:
Assurez-vous que votre serveur Apache charge le bon module PHP.
Bien que ce que vous avez fait semble techniquement correct, la seule raison pour laquelle cela ne fonctionne pas est qu'il existe en quelque sorte une autre
LoadModule php5_module
directive dans les fichiers de configuration Apache qui remplace la valeur que vous définissez cette ligne.Je recommanderais de parcourir le
httpd.conf
—qui je suppose qu'il se trouve ici/etc/apache2/httpd.conf
— et de voir s'il y en a peut-être un autreLoadModule php5_module
que vous avez manqué ou que vous n'avez pas remarqué lors de la modification de ce fichier. En regardant mon fichier équivalent dans Mac OS X 10.9.5, je vois que la ligne est commentée - car je n'utilise pas les configurations Apache / PHP de Mac OS X - et lit quelque chose comme ceci:Bien sûr, dans votre cas, ce serait sans commentaire. Plus de détails sur la configuration d'Apache et de PHP pour le développement Web peuvent être trouvés sur ce site .
Envisagez sérieusement d'utiliser MAMP comme alternative aux bizarreries Apache / PHP de Mac OS X.
Maintenant, tout cela dit, je ne sais pas ce que vous essayez de faire, mais si vous faites du développement Web sur un système Mac OS X, vous devriez sérieusement envisager d'utiliser MAMP au lieu de pirater la pile Web principale de Mac OS X pour obtenir des choses. fonctionnement.
L'avantage de MAMP est qu'il s'agit d'un équivalent Mac OS X extrêmement productif d'une pile LAMP. Et comme il est orienté vers le développement Web dans le monde réel, il a tous les modules et configurations configurés exactement comme on devrait les configurer.
Le problème principal avec Apache et PHP sur Mac OS X est que le logiciel est généralement obsolète, une douleur à configurer / modifier et gérer et un mal de tête à déboguer lorsque des choses comme cela se produisent. Et si une mise à jour de Mac OS X arrive qui efface vos paramètres Apache et PHP soigneusement configurés? Vous êtes de retour à la case départ.
la source
J'ai trouvé la solution à mon problème. Après l'édition,
/etc/apache2/httpd.conf
je redémarrais apache en utilisant:Pour une raison quelconque, l'utilisation de cette commande Apache ne récupérerait pas les mises à jour dans le
httpd.conf
et ne chargerait pas l'ancienne configuration.En utilisant:
Faites une sorte de redémarrage dur de tous les services et lit également les mises à jour dans le fichier de configuration et enfin lisez le nouveau chemin pour
php5_module
:Merci également à @JakeGould pour son explication .
la source
-k
indicateur desapachectl
commandes car si vous vérifiezapachectl -h
que l'indicateur / l'option n'existe pas là-bas. Je ne sais pas d'où tu viens. De plus, alors que vous déclarez fairestop
etstart
clarifier les choses, la chose étrange est querestart
sur les systèmes Linux, c'est exactement cela. Si vous vérifiez le script qui se trouve dans/usr/sbin/apachectl
(c'est un script, utilisez n'importe quel éditeur de texte pour le voir), il semble faire exactement cela aussi. Peut-être que sur Mac OS X,LaunchDaemons
Apache est juste «bizarre» par rapport à Linux standard? Quoi qu'il en soit, vous avez résolu ce problème./usr/sbin/apachectl
(sans commande) et il est clairement,[-k start|restart|graceful|graceful-stop|stop]
. Je suis tellement habitué à la façon dont Apache fonctionne sur les systèmes Linux, il semble que j'ai oublié le-k
drapeau à utiliser avec lesapachectl
commandes. Donc, sachant que le vrai problème que vous aviez, c'est que vous tentiez de redémarrer avec cette commandesudo apachectl restart
alors que le-k
drapeau aurait dû être ajouté comme cecisudo apachectl -k restart
.