使用している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
などの設定ファイルに変更を加えることができません。
慌てる必要はありません。 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で使用するように指定したバージョン。
Apacheを使用してUbuntu 14.04でPHP5からPHP7にアップグレードしているときにこの問題が発生した場合は、以下が役立ちました(クレジットが ここ ):
ApacheでPHP5モジュールを無効にします。
Sudo a2dismod php5
PHP7を有効にします。
Sudo a2enmod php7.1
変更を反映するには、Apacheの再起動が必要です。
Sudo systemctl restart Apache2
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セント追加してもいいのなら...
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