ApacheはPHPファイルの変更を読みません。

ApacheはPHPファイルの変更を読みません。

私はApacheとPHPを使用してCentOS6サーバーで開発しています。 PHPファイルを変更して保存すると、Apacheは変更されたファイルを読み取れないようです。まだ古い .php ファイルを処理しています。 5〜10分後に新しいファイルの使用を開始します。

誰かがApacheに変更された.phpファイルをすぐに選択するように強制する方法を教えてもらえますか?


更新:ファイルをApacheサーバーに移動しましたが、問題はまだ存在します(NFSの問題ではありません)。だから、Apacheは混乱しても数分間変更されたファイルを読んでいないようです。

答え1

たぶん私はあなたと同じ問題を抱えていますが、それはphp.iniのopcache設定によるものです。そのため、再検証の頻度を0に設定しました。

opcache.revalidate_freq=0

またはopcacheを無効にしてください。

opcache.enable=0

後でApacheサーバーを再起動することを忘れないでください。

答え2

ApacheはPHPやその他の設定ファイルの変更を積極的に監視しません。変更を再ロードするようにサービスに指示する必要があります。

# service httpd reload

または、サーバーを完全に停止して起動します。

# service httpd restart

一方、httpd.confファイル(通常は/etc/httpd/conf/httpd.conf)でmod_statusを有効にして次を追加するか、コメントを外してサーバーがデータを再ロードするタイミングを確認できます。

<Location /server-status>
SetHandler server-status

Order Deny,Allow
Deny from all
Allow from .example.com
</Location>

ここで、 " Allow from"の後にはドメイン、IP、ローカルホスト(同じシステムで開発されている場合は最後のホスト)、またはそれらの組み合わせが続く必要があり、すべてスペースで区切られます。

その後、その場所用に新しく作成された特別なハンドラを使用すると/server-status(のようにURLサーバーの最後に追加http://www.server.com/server-status)、最後のサーバーに関する情報を含むApacheサーバーの実行状態に関する多くの情報を表示できます。 。設定された時間。

答え3

PHPコードの更新がすぐに反映されない開発コンピュータでも同様の問題がありました。設定を編集し、ディレクティブを次のように設定してphp.ini opcache問題を解決しました。

opcache.enable=0

答え4

デーモンが実行されている場合に変更を認識するphp-fpmには、さらに1つの手順を実行する必要がありますphp.ini。 Apacheを再起動するだけでは十分ではありません。

Linuxの場合:

sudo kill-USR2PID

基本プロセスのPIDを指定しますphp-fpm。でプロセスIDを見つけることができますps auxwwf | grep php

私のAmazon Drupalインスタンスはphp-fpmこのプロセスで実行されます。これを把握するのに時間がかかりました。

関連情報