0

何らかの理由で、クラスが正しくロードされません。ロードに失敗しているか、間違ったバージョンのクラスがロードされています (間違ったディレクトリから取得されています)。

いくつかのデバッグの後、使用されているインクルード パスが実際には前の要求からのインクルード パスであることが明らかになりました。

ただし、get_include_path()ログに記録された結果を実行すると正しいですが、実際には使用されず、前の要求からのパスを使用したことが動作から明らかです。

私のコードは、Yii フレームワークを使用した PHP です。includepathフレームワークは実行時に操作します。

PHP のバージョンは5.31、xampp、windows7

編集:apcを無効にすると問題が解決しました

4

1 に答える 1

1

これは APC でかなり頻繁に見られます。ほとんどの場合、APC がいっぱいになったとき。

ブラウザでapc.phpスクリプト (ほとんどの APC インストールに含まれています) を実行して、使用率を確認します。出力は次のようになります。 apc出力

APC がいっぱいの場合は、割り当てられているメモリの量を増やします。PHP 設定のどこかに、これを制御する設定オプションがあります: apc.shm_size=64. これにより、64 メガの RAM が割り当てられます。余裕ができるまで増やしてください。この変更を有効にするには、Apache を再起動する必要があります。

毎回ディスク上の異なるパスにアプリケーションをデプロイする場合は、おそらく APC をパージする必要があります。そうしないと、古いキャッシュ エントリが残る傾向があります。これを行う最も簡単な方法は、Web サーバーを正常に再起動することです。アクティブな運用サーバーでは、これによりアクティブなリクエストが 1 秒程度中断されることに注意してください。

于 2011-04-06T19:19:21.747 に答える