phpinfo()およびphp -vは異なるバージョンのPHPを表示します


18

php使用しているバージョンを知りたいので、標準スクリプトを作成しました。

phpinfo();

それは私に与えます

PHP version 5.6.10

正しい自分のアプリケーションのために必要なPHPバージョン。ターミナルで試したとき:

php -i

または

php -v

それは私を示しています:

PHP version 5.3.2

私には必要ありません。その後、私は試しました:

which php

それは私を示しています:

/usr/bin/php

今、使用しているPHPのバージョンが混乱しています。ファイルはホスティングWebサイトにアップロードされ、httpd.confまたはなどの構成ファイルに変更を加えることはできませんphp.ini

回答:


22

短い答え。

パニックにならないでください!Apacheサーバーが使用しているPHPバージョンが心配な場合phpinfo()は、常に出力に注意する必要があります。Apache PHPモジュールとPHPコマンドラインバイナリは、互いに干渉しない2つの異なるものです。

実際、Apacheを適切にロードするように調整する限り、Apacheで作業したいさまざまなPHPバージョンをコンパイルしてロードできます。Apacheコマンドラインインターフェイスは、ApacheがPHPページを解析する場合には機能しません。

PHPのコマンドラインバージョンは、単にコマンドライン固有のタスクのためにあり、ApacheのPHPモジュールは決してそれを使用、使用、または必要としません。

長い答え。

あなたはこれを言う:

php使用しているバージョンを知りたいので、標準スクリプトを作成しました。

phpinfo();

これにより、PHPバージョン5.6.10- アプリケーションに必要な正しい PHPバージョンが得られます。ターミナルで試したとき:

php -i or php -v   

必要のないPHPバージョン5.3.2が表示されます。

コマンドラインから利用可能なPHPのバージョンは、モジュールとしてロードされたPHPのバージョンとはまったく関係ありません。これらは完全に別のものです。

そのため、Webアプリケーションが使用しているPHPのバージョンが心配な場合phpinfo()、バージョン5.6.10が表示されている場合、それが100%で十分です。

PHPのコマンドラインバージョンは、完全に独立したシステム項目です。したがって、重要なのはの出力のみですphpinfo()

何らかの理由で、Apacheで異なるバージョンのPHPを使用したい場合は、コンパイル済みのApache PHPモジュールをどこかにインストールし、システムのApache configに次の行を追加(または調整)するだけです。

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

そして、libphp5.soApacheがPHPの解析に使用するものへのパスを調整するだけで、Apacheを再起動してビジネスを開始できます。

たとえば、PHP 5.3.5を実行しているUbuntu 12.04マシンで使用するために、ある時点でPHPバージョン5.1.6をソース(GDライブラリをサポート)からコンパイルする必要がありました。サーバーのPHPモジュール読み込みファイル:

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

このような行がありました:

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

1行がコメントアウトされlibphp535.so、もう1行がコメントlibphp516-gd.so解除されていることに注意してください。私がやったのは、デフォルトのPHP 5.3.5 libphp5.soApacheモジュールlibphp535.soの名前をバージョン番号に変更して参照できるようにし、PHP 5.1.6(GDライブラリをサポート)モジュールに名前を付けてそれがlibphp516-gd.soわかるようにすることですも同様です。このようにして、システム上でそれらの両方を利用できます。

そして、最初に言ったように、コマンドラインで使用されるPHPバージョンは、Apache PHPモジュールとはまったく関係ありません。したがって、Apache PHPモジュールのさまざまなバージョンをいくつでもシステムに配置して、すぐに使用できます。設定を調整してApacheを再起動するだけで、Apacheで使用する必要のあるPHPバージョンを使用できるようになります。


23

Apache 14.04を使用してUbuntu 14.04でPHP5からPHP7にアップグレードするときにこの問題が発生した場合は、以下が役立ちました(クレジットはこちら)。

ApacheでPHP5モジュールを無効にします。

sudo a2dismod php5

PHP7を有効にします。

sudo a2enmod php7.1

変更を反映するには、Apacheの再起動が必要です。

sudo systemctl restart apache2

php.iniが異なる場合、プロジェクトがクラッシュする可能性があります
-KawaiKx

2

WebサーバーからPHPコードを実行しようとしている場合、使用しているバージョンはphpinfo()= 5.6.10によって報告されるバージョンです。

サーバーには複数のバージョンのPHPがインストールされphpているようです。コマンドラインでログインして実行すると、/ usr / bin / phpにインストールされている古いバージョンが取得されます。

サーバーには多くのバージョンのPHPを含めることができますが、ご使用のバージョンのようです。

Webサーバーと同じPHPを手動で実行する必要がある場合は、他のバージョンを見つける必要があります。次のコマンドを実行してみてください。

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

それらの1つは、Webサーバーと同じバージョンのPHPを明らかにする可能性があります。どのバージョンかを判断するとき、デフォルトの代わりにそのバージョンを使用できます。


0

2セントを追加できる場合...

Nextcloudバージョンをアップグレードしていました。アップグレード手順を実行するとき、apacheユーザーとして「sudo php」を実行する必要がありますが、apacheユーザーがデフォルトで実行するphp CLIバージョンが古すぎるため、実行を拒否しました。ただし、phpinfo(); 私のサーバーにインストールされている最新のphpバージョンが表示されました。

私はので、それはだことに気づい/home/apache/.bashrcファイル内のPATH変数が、私は私のサーバーにインストールされたPHPの最初のバージョンに設定し、それが再び更新されることはなかった(私はいつもコンパイル/ Githubの上のソースからPHPをインストール)

ソリューション:

Webサーバーでphpを更新し、apacheユーザーとしてsudoを使用するときに使用するCLI phpバージョンが最新であることを確認する場合は、このユーザーの.bashrcファイルで次のように変更することを忘れないでください。

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


-1

これを修正する手順。まず、どのPHPバージョンが表示されます。

php -v

PHPパスが必要になります。わからない場合は、PHPパスのホスティングサポートにお問い合わせください。私の場合は

/opt/php71/bin/php

さて、ターミナルでこのコマンドを実行します。

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

これにより、PHPバージョンがPHP 7.1に変更されます。7.2に変更する場合は、試してください。

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

できました。で検証する

php -v

-3

php最新バージョンの環境変数パスを作成しますex:C:\ wamp64 \ bin \ php \ php7.2.4ここで、以前のphpバージョンフォルダー.php5.6.35を別の番号php5.6.354に変更します。次に、php -v your wampを確認します。サーバーとCLIのPHPは同じになります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.