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

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

phpinfo()php -v(CLI 内)によって報告された PHP バージョンが一致していないことに気付きました。

phpinfo():  5.5.24
php -v: 5.6.9

php-version私は Mac OS X 10.10 (Yosemite) で作業しており、 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があります

答え1

ここではいくつかの異なる問題がすべて PHP バージョンの混乱という概念の下に隠れているので、それぞれをできるだけ明確に説明しようとします。まずこれ:

phpinfo()php -v(CLI 内)によって報告された PHP バージョンが一致していないことに気付きました。

phpinfo():  5.5.24
php -v: 5.6.9

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

回答で説明したようにこの他の質問はこちら、慌てる必要はありません。Apache サーバーが使用している PHP のバージョンが気になる場合は、 の出力phpinfo()に常に注意を払う必要があります。Apache PHP モジュールと PHP コマンドライン バイナリは、互いに干渉しない 2 つの異なるものです。

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

そうは言っても、Apache に正しい PHP モジュールをロードする際にまだ問題があるようです。

私は次の行を書いてみましたhttpd.conf:

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

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

技術的にはあなたが行ったことは正しいように見えますが、これが機能しない唯一の理由は、何らかの理由で、LoadModule php5_moduleその行に設定した値に取って代わる別のディレクティブが Apache 構成ファイルに存在することです。

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

もちろん、あなたの場合はコメントアウトされません。Web開発用のApacheとPHPの設定の詳細については、このサイトで見つけることができます

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

とはいえ、あなたが何をしようとしているのかはわかりませんが、Mac OS XシステムでWeb開発を行っている場合は、真剣に検討する必要があります。マンプ動作させるためにコア Mac OS X Web スタックをハッキングする代わりに。

MAMP の利点は、LAMP スタックの Mac OS X 版として極めて実稼働レベルに近いことです。また、実際の Web 開発向けに設計されているため、すべてのモジュールと構成が、必要な通りにセットアップされています。

Mac OS X 上の Apache と PHP の根本的な問題は、ソフトウェアが通常古く、設定/調整や管理が面倒で、このようなことが起きるとデバッグが面倒になることです。そして、Mac OS X のアップデートによって、慎重に設定した Apache と PHP の設定が消去されたらどうなるでしょうか? 振り出しに戻ってしまいます。

答え2

問題の解決策を見つけました。編集後、次のコマンド/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

ありがとう@Giacomo1968 の説明

答え3

私の状況 (Composer がインストールされた Windows サーバー) では、Composer は php.ini 内のさまざまな PHP 拡張機能へのパスもハードコードしていました (例: extension=C:/php7-3-27/ext/php_gd2.dll)。そのため、これらも変更する必要がありました。それでも、Apache Web ページから呼び出された phpinfo() に表示されるバージョンは変更されませんでした。Composer は古い PHP バージョン フォルダーも PATH 環境変数に追加していたため、バージョン変更が有効になる前に、新しい PHP フォルダーを指すように変更する必要がありました。

もちろん、このスレッドの他の回答に従って、httpd.conf が更新されていることを確認する必要があります。しかし、それが機能しない場合は、phpinfo() にリストされている php.ini へのパスを確認し、次の ^^ も確認してください。

関連情報