web-dev-qa-db-ja.com

phpinfo()とphp -vは、PHP

使用している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.confphp.iniなどの設定ファイルに変更を加えることができません。

22
Gabf Hann

より短い答え。

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

実際、Apacheを適切にロードするように調整する限り、Apacheで使用するさまざまなPHPバージョンをコンパイルしてロードできます。PHPコマンドラインインターフェースPHPページ。

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

より長い答え。

あなたはこれを言う:

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

_phpinfo();
_

これは私にPHP version 5.6.10- the correct PHP version required for my application。私がターミナルで試したとき:

_php -i or php -v   
_

PHPバージョン5.3.2は不要です。

PHPコマンドラインから利用できるバージョンは、モジュールとしてロードされるPHPのバージョンとは100%無関係です。これらは完全に別のものです。

したがって、PHPのどのバージョンがWebアプリケーションで使用されているかが気になる場合、phpinfo()がバージョン5.6.10を表示し、それが100%である必要があります。大丈夫。

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

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

_LoadModule php5_module    /path/to/php/and/the/module/for/Apache2/libphp5.so
_

そして、ApacheがPHPを解析するために使用する_libphp5.so_へのパスを調整するだけで、Apacheを再起動すれば、作業が開始されます。

たとえば、ある時点でPHPバージョン5.1.6をソースからコンパイルし(Gdライブラリをサポートしている)、PHPを実行しているUbuntu 12.04マシンで使用する必要がありました。 5.3.5。サーバーのPHP module loading file here:

_/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
_

_libphp535.so_の1行がコメント化されており、_libphp516-Gd.so_の別の行がコメント化されていないことに注意してください。私がしたことは、デフォルトのPHP 5.3.5 _libphp5.so_ Apacheモジュールを名前にバージョン番号を付けて_libphp535.so_に名前を変更したので、参照用にそこに置くことができます。次にPHP 5.1.6(Gdライブラリサポートあり)モジュール_libphp516-Gd.so_という名前を付けたので、それも同じようにわかります。これにより、両方を並べて使用できるようになりますシステムの側面。

また、冒頭で述べたように、PHPコマンドラインで使用されるバージョンは、Apache PHPモジュールとはまったく関係がありません。 Apacheの任意の数のバージョンのApache PHPモジュールは準備ができてシステム上にあります。構成を調整してApacheを再起動するだけで、何でもPHP Apacheで使用するように指定したバージョン。

22
JakeGould

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

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

Sudo a2dismod php5

PHP7を有効にします。

Sudo a2enmod php7.1

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

Sudo systemctl restart Apache2
27
Jan Żankowski

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

サーバーに複数のバージョンの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を明らかにする可能性があります。それがどれであるかがわかったら、デフォルトの代わりにそのバージョンを使用できます。

2
Ross Perkins

2セント追加してもいいのなら...

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

それは /home/Apache/.bashrcファイルのPATH変数が、サーバーにインストールしたphpの最初のバージョンに設定されました、そしてそれは二度と更新されませんでした(私は常にGithubのソースからphpをコンパイル/インストールします)

ソリューション:

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

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

0
JeffCourteau