我们似乎对 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
这个特定的服务器是运行 PHP 5.3.8 和 eAccelerator 的 Linux RedHat-9.3.6,上面的代码已经在其他 10 个服务器上进行了测试,并且运行良好,所以真的不知道为什么会在这个特定的服务器上发生这种情况。
我们真的很想使用 spl_autoload 方法而不是 include/require 这会减慢我们的应用程序。请我希望有人可以提供一些建议来帮助我们解决这个问题。