1つの特定のサーバーのspl_autoloadに非常に奇妙な問題があるようです。警告:spl_autoload()[function.spl-autoload]:file.phpにアクセスできません
public function loadClass($className) {
if(substr($className, -5) == 'Override') {
$classes = glob(_ROOT_DIR_ . 'classes/*/override/*/*.php');
foreach($classes AS $class) {
$explodePath = explode('/', $class);
$explodePath = array_reverse($explodePath);
if(file_exists(_ROOT_DIR_.'classes/'.$explodePath[3].'/override/'.$explodePath[1].'/'.$explodePath[0])) {
set_include_path(get_include_path().PATH_SEPARATOR._ROOT_DIR_.'classes/'.$explodePath[3].'/override/'.$explodePath[1].'/');
spl_autoload(strtolower($className));
}
}
}
return FALSE;
}
また、チェックしたところ、WHMパネルで、インクルードパスが。:/ usr / lib / php:/ usr / local / lib/phpに設定されていることが示されています。
この特定のサーバーは、PHP5.3.8とeAcceleratorを実行しているLinuxRedHat-9.3.6です。上記のコードは他の10台のサーバーでテストされており、正常に動作しているため、この特定のサーバーでこれが発生する理由がわかりません。
アプリケーションの速度を低下させるinclude/requireの代わりに、spl_autoloadメソッドを使用したいと思います。誰かがこの問題を解決するのを手伝ってくれるアドバイスを提供してくれることを願っています。