2

私は両方を試しました:

ini_set('include_path', '.:/usr/share/php5:/usr/share/php5/PEAR:lib:app/classes');

そしてまた:

php_value include_path ".:/usr/share/php5:/usr/share/php5/PEAR:lib:app/classes"

.htaccessファイルにあります。

どちらの方法も実際には機能しますが、断続的にしか機能しません。つまり、約37ページのリクエストで正常に機能し、約42ページのリクエストで失敗すると、require()呼び出しが発生し、致命的なエラーが発生してサイトが事実上クラッシュします。

何が起こっているのかをどこから調べ始めればよいのかさえわかりません。


@ cnote

インクルードパスに現在のディレクトリを複製したようです。文字列から「。:」の1つを削除してみてください。

スクリプト内のバージョンは元々

ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . 'lib' . PATH_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'classes');

したがって、。:。:は既存のパスから来ていました:

ini_get('include_path')

とにかくそれを削除しようとしましたが、問題は解決しません。

4

3 に答える 3

4

set_include_path()を試しましたか?利点として、これは失敗時にfalseを返し、少なくとも発生をキャッチして、意味のあるデバッグデータを生成できるようにします。PATH_SEPARATORさらに、ウィンドウ/ * nix間で異なるため、定数を使用する必要があります。

具体的な例として:

set_include_path('.' . PATH_SEPARATOR . './app/lib' . PATH_SEPARATOR . get_include_path());

(最後のget_include_path()は、ini / htaccessパスが設定されているものがすべて残ることを意味します)

于 2008-09-03T19:18:17.260 に答える
3

この問題は5.2.5のPHPバグに関連していることが判明しました

include_pathに「admin_flag」を設定すると、一部のリクエストでインクルードパスが空になり、Pleskは何かのデフォルト設定にadmin_flagを設定します。PHPのアップデートで問題が解決しました。

http://bugs.php.net/bug.php?id=43677

于 2010-02-09T09:32:29.833 に答える
0

インクルード パスで現在のディレクトリを複製したようです。文字列から「.:」の 1 つを削除してみてください。

于 2008-09-03T15:05:31.250 に答える