web-dev-qa-db-ja.com

PHPバージョンがphpinfo()とCLIで異なるのはなぜですか?

PHP phpinfo()によって報告されたバージョンと(CLIの)php -vによって報告されたバージョンの間にミスマッチがあることに気付きました。

phpinfo():  5.5.24
php -v: 5.6.9

Mac OS X 10.10(Yosemite)で作業しており、ライブラリ(php-version)をインストールしてPHPバージョンを管理しようとしています。

それは私のラップトップにインストールされた3つの異なるバージョンを報告します:

  5.4.41
  5.5.25
* 5.6.9

ApacheとCLIの両方で同じバージョンのPHPを設定したいと思います。

どのようにApacheにどのPHPバージョンの使用を伝えるか?

この行をhttpd.confに書き込もうとしました:

LoadModule php5_module    /usr/local/opt/php56/libexec/Apache2/libphp5.so

次に:

Sudo apachectl restart

しかし、これですべてが問題を解決するわけではありません…私のPHP情報では、私はまだ持っています:5.5.24

29

ここではいくつかの異なる問題をすべてPHP=バージョンの混乱の概念の下に隠しているので、それぞれに可能な限り明確に対処するように努めます。最初にこれ:

PHP phpinfo()によって報告されたバージョン)と_php -v_(CLI内)の間にミスマッチがあることに気付きました。

_phpinfo():  5.5.24
php -v: 5.6.9
_

PHP CLIは、PHP Apacheモジュールと同じではありません。

この他の質問への回答 で説明しているように、慌てないでください! Apacheサーバーが使用しているPHP=バージョンについて心配している場合、phpinfo()の出力は常に注意する必要があります。ApachePHPモジュールとPHPコマンドラインバイナリは、互いに干渉しない2つの異なるものです。

Apacheで正しいPHPモジュールバージョンを設定することについて懸念がある場合は、phpinfo()の出力に注意してください。

とはいえ、Apacheに正しいPHPモジュールをロードすることで問題が発生するようです:

私は_httpd.conf_にこの行を書き込もうとしました:

_LoadModule php5_module    /usr/local/opt/php56/libexec/Apache2/libphp5.so
_

Apacheサーバーが正しいPHPモジュールをロードしていることを確認してください。

技術的に正しいように見えますが、これが機能しない理由は、Apache構成ファイルに別の_LoadModule php5_module_ディレクティブがあり、その行を設定している値よりも優先されているためです。

_httpd.conf_(ここに_/etc/Apache2/httpd.conf_があると思います)を調べて、そのファイルの編集時に見落とした、または気づかなかった_LoadModule php5_module_が実際にあるかどうかを確認することをお勧めします。 Mac OS X 10.9.5で同等のファイルを見ると、Mac OS X Apache/PHPセットアップを使用していないため、行がコメント化されており、次のようになっています。

_#LoadModule php5_module libexec/Apache2/libphp5.so
_

もちろん、あなたの場合、それはコメントされていません。 Apacheの設定に関する詳細とPHP )は、このサイト にあります。

Mac OS X Apache/PHP癖の代わりにMAMPを使用することを真剣に検討してください。

今のところ、あなたが何をしようとしているのかはわかりませんが、Mac OS XシステムでWeb開発をしている場合は、 の使用を真剣に検討する必要があります[〜#〜] mamp [〜#〜] コアMac OS X Webスタックをハッキングする代わりに、動作を開始します。

MAMPの利点は、LAMPスタックと同等の非常に生産レベルのMac OS Xであることです。また、実際のウェブ開発を対象としているため、すべてのモジュールと構成が完全にセットアップされているはずです。

ApacheとPHPの中心的な問題は、ソフトウェアが通常古くなっていて、設定/調整と管理が面倒であり、このようなことが発生したときにデバッグするのに頭痛がすることです。 Mac OS Xの更新が行われ、ApacheとPHPの設定が慎重に設定されている場合、その設定は無効になりますか?.

15
JakeGould

私は自分の問題の解決策を見つけました。編集後、/etc/Apache2/httpd.confを使用してApacheを再起動しました。

Sudo apachectl restart

何らかの理由でこのコマンドを使用すると、Apacheはhttpd.confの更新をフェッチせず、古い構成をロードしませんでした。

使用:

Sudo apachectl -k stop
Sudo apachectl -k start

すべてのサービスの一種のハードリスタートを行い、構成ファイルの更新を読み取り、最後にphp5_moduleの新しいパスを読み取ります。

/usr/local/opt/php56/libexec/Apache2/libphp5.so

また、ありがとう @ JakeGouldの説明