私は、そのファイルのコピーがあるまで、製品インスタンスがメインフレームワークファイルを使用するフレームワークを構築しています。私はそれが最初/view-users.phpためMY_PRODUCT_ROOTになりますし、それが見つからない場合は、それがその後、MY_FRAMEWORK_ROOT /ビュー、ユーザーに見ていきますinclude('view-users.php');
呼び出すのであればPHPにパスの順序とステータスキャッシュが含まれています
set_include_path(MY_PRODUCT_ROOT.'/' . PATH_SEPARATOR . MY_FRAMEWORK_ROOT.'/');
:以下、これは私が行っている達成するために.php。
この手順は、製品ルートにファイルを追加するまで非常にうまく動作しています。 PHP/Apacheがインクルードファイルをキャッシュしていて、clearstatcache(true);
を実行して状態キャッシュをクリアすると思います。 PHPはおそらくinclude()の中にfile_existsを使用しています。新しいファイルがまだ存在しないと考えます。 Apacheを再起動しても何の効果もありませんでした。
残念ながらclearstatcache(true);
を実行しても役に立ちません。一度だけ私はMY_FRAMEWORK_ROOT /ファイルを削除しましたが、キャッシュをクリアして再度試してみると、MY_PRODUCT_ROOT /ファイルが見つかります。少し困惑
イム
は、私たちは、ファイル(複数可)が存在するか否かのPHP/Apacheの理解をリフレッシュする必要が知っているが、clearstatcache(true);
支援していません...
任意のアイデアは?
更新日:修正、Apacheを再起動するのが今役立つようです。開発環境はWindows上でのZend Server CEのPHP 5.3.14、本番環境のCentOSのLinuxのhttpdです:私は、既存のMY_FRAMEWORK_ROOTファイルに重なるように、MY_PRODUCT_ROOTにファイルを追加しようとすると、これが唯一の
UPDATEは、カスタマイズのため、発生することを改めて表明します、PHP 5.3+私の開発環境でZendオプティマイザが有効になっているという事実は、APCや他のキャッシングスクリプトを使用していない場合でも効果があります。
より正確には、apacheの再起動はclearstatcacheの呼び出し時にのみ機能します。私は実際に、フレームワークファイルを削除し、ページをリロードし、フレームワークファイルを戻す必要があります – Prof83
apcキャッシュが有効になっていますか? (または別のoptcodeキャッシュ) –
私はまた、PHP 5.3.3とApache 2.2.16で問題を再現することができませんでした。あなたの環境に関する詳細を述べることができますか? – Lars