phpinfo () et php -v montrent différentes versions de PHP

18

Je voulais savoir quelle phpversion j'utilise alors j'ai écrit le script standard:

phpinfo();

Ce qui me donne

PHP version 5.6.10

La version PHP correcte requise pour mon application. Quand j'ai essayé dans le terminal:

php -i

ou

php -v

Cela me montre:

PHP version 5.3.2

Ce dont je n'ai pas besoin. J'ai ensuite essayé avec:

which php

Cela me montre:

/usr/bin/php

Maintenant, je ne sais pas quelle version de PHP j'utilise. Les fichiers sont téléchargés sur le site d'hébergement et je ne peux pas apporter de modifications aux fichiers de configuration comme httpd.confou php.ini.

Gabf Hann
la source

Réponses:

22

Réponse plus courte.

Pas de panique! 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.

En fait, vous pouvez compiler et charger diverses versions PHP que vous souhaitez utiliser avec Apache tant que vous ajustez Apache pour le charger correctement. L'interface de ligne de commande PHP n'entrera jamais en jeu dans le cas d'Apache qui analyse les pages PHP.

La version en ligne de commande de PHP est simplement là pour les tâches spécifiques à la ligne de commande et le module PHP pour Apache ne touchera, n'utilisera ou n'aura jamais besoin de cela.

Réponse plus longue.

Tu dis ça:

Je voulais savoir quelle phpversion j'utilise alors j'ai écrit le script standard:

phpinfo();

Ce qui me donne la version PHP 5.6.10 - la version PHP correcte nécessaire pour mon application. Quand j'ai essayé dans le terminal:

php -i or php -v   

Il me montre la version PHP 5.3.2 dont je n'ai pas besoin.

La version de PHP disponible depuis la ligne de commande n'a rien à voir avec la version de PHP chargée en tant que module. Ce sont des choses complètement distinctes.

Donc, si vous êtes préoccupé par la version de PHP que votre application Web utilise, si la phpinfo()version 5.6.10 est affichée et c'est ce que vous voulez / avez besoin, c'est 100% correct.

La version en ligne de commande de PHP est un élément système complètement distinct. Donc, la seule chose qui compte est la sortie de phpinfo().

Si pour une raison quelconque vous vouliez utiliser une version différente de PHP avec Apache, tout ce que vous avez à faire est d'installer le module PHP Apache compilé quelque part et d'ajouter - ou d'ajuster - cette ligne dans la configuration Apache de votre système:

LoadModule php5_module    /path/to/php/and/the/module/for/apache2/libphp5.so

Et ajustez simplement le chemin vers le libphp5.so- qui est ce qu'Apache utilise pour analyser PHP - puis redémarrez Apache et vous êtes en affaires.

Par exemple, à un moment donné, j'ai dû compiler la version 5.1.6 de PHP à partir des sources (avec le support de la bibliothèque GD) pour une utilisation sur une machine Ubuntu 12.04 exécutant PHP 5.3.5. Dans le fichier de chargement du module PHP du serveur ici:

/etc/apache2/mods-available/php5.load

J'avais des lignes comme ça:

# LoadModule php5_module        /usr/lib/apache2/modules/libphp535.so
LoadModule php5_module        /usr/lib/apache2/modules/libphp516-gd.so

Remarquez comment une ligne est commentée libphp535.soet l'autre non commentée libphp516-gd.so? Ce que j'ai fait, c'est que j'ai renommé le libphp5.somodule Apache PHP 5.3.5 par défaut libphp535.soavec le numéro de version dans le nom afin que je puisse l'avoir là pour référence, puis j'ai nommé le module PHP 5.1.6 (avec le support de la bibliothèque GD) libphp516-gd.sodonc je sais ce que cela l'est aussi. De cette façon, je les ai tous deux côte à côte sur le système.

Et - comme je l'ai dit au début - la version PHP utilisée dans la ligne de commande n'a absolument rien à voir avec le module PHP Apache. Ainsi, vous pouvez avoir un certain nombre de versions différentes de modules PHP Apache assis sur le système prêt à l'emploi; ajustez simplement une configuration et redémarrez Apache et vous devriez être en mesure d'utiliser la version PHP que vous avez spécifiée pour Apache.

JakeGould
la source
24

Si vous rencontrez ce problème lors de la mise à niveau de PHP5 vers PHP7 sur Ubuntu 14.04 avec Apache, voici ce qui m'a aidé (le crédit va ici ):

Désactivez le module PHP5 sur Apache:

sudo a2dismod php5

Activez maintenant PHP7:

sudo a2enmod php7.1

Pour refléter les changements, le redémarrage d'Apache est requis:

sudo systemctl restart apache2
Jan Żankowski
la source
cela peut planter le projet si php.ini est différent
KawaiKx
assurez-vous également que les bibliothèques php pour la nouvelle version sont installées, je veux dire gd, mcrypt, xml etc.
korwalskiy
2

Si vous essayez d'exécuter du code PHP à partir de votre serveur Web, la version que vous utilisez est celle indiquée par phpinfo()= 5.6.10 .

Votre serveur a apparemment plusieurs versions de PHP installées, et lorsque vous vous connectez et exécutez phpsur la ligne de commande, vous obtenez l'ancienne version qui est installée dans / usr / bin / php.

Un serveur peut avoir de nombreuses versions de PHP, et la vôtre semble le faire.

Si vous devez exécuter manuellement le même PHP que votre serveur Web, vous devez trouver l'autre version. Essayez d'exécuter ces commandes:

/usr/local/bin/php -v
/opt/local/bin/php -v
/opt/bin/php -v

L'un d'entre eux peut révéler un PHP avec la même version que votre serveur Web, et lorsque vous déterminez lequel il est, vous pouvez utiliser celui-ci au lieu de celui par défaut.

Ross Perkins
la source
0

Si je peux ajouter mes 2 cents ...

Je mettais à jour ma version Nextcloud. Lorsque j'exécute la procédure de mise à niveau, je dois "sudo php" en tant qu'utilisateur apache, mais il a refusé de s'exécuter car la version php CLI exécutée par défaut par l'utilisateur apache était trop ancienne. Cependant, phpinfo (); sur mon serveur affiché la dernière version php installée.

J'ai réalisé que c'était parce que la variable PATH dans le fichier /home/apache/.bashrc était définie sur la première version de php que j'avais installée sur mon serveur , et qu'elle n'était plus jamais mise à jour (je compile / installe toujours php à partir des sources sur Github )

La solution:

Lorsque vous mettez à jour php sur votre serveur Web et que vous voulez vous assurer que la version php CLI utilisée est la plus récente lorsque vous êtes sudo en tant qu'utilisateur apache, n'oubliez pas de la changer dans le fichier .bashrc de cet utilisateur, comme ceci:

PATH=$PATH:/var/www/html: /usr/local/php7.1.32/bin export PATH

JeffCourteau
la source
-1

Étapes pour résoudre ce problème. Tout d'abord quelle version PHP vous montre.

php -v

Maintenant, vous aurez besoin d'un chemin PHP, si vous ne le savez pas, vous pouvez contacter votre support d'hébergement pour le chemin PHP. Dans mon cas, c'était

/opt/php71/bin/php

Maintenant, il est temps d'exécuter cette commande dans le terminal.

alias php='/opt/php71/bin/php'

Cela changera votre version PHP en PHP 7.1 Si vous voulez la changer en 7.2, vous pouvez essayer

alias php='/opt/php72/bin/php'

Vous avez terminé. Vérifiez-le avec

php -v
Akram Chauhan
la source
-3

Créez un chemin de variable d'environnement pour la dernière version de php ex: C: \ wamp64 \ bin \ php \ php7.2.4 Maintenant, changez votre dossier de version de php précédent .php5.6.35 en un autre numéro php5.6.354 .. Ensuite, vérifiez php -v votre wamp serveur et phi cli seront les mêmes

sudheep kr
la source