0

我们似乎对 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 这会减慢我们的应用程序。请我希望有人可以提供一些建议来帮助我们解决这个问题。

4

0 回答 0