Различное поведение spl_autoload_register в сети и на локальном хосте

StackOverflow https://stackoverflow.com//questions/20024552

Вопрос

enter image description here

У меня есть следующая структура каталогов, я помещаю все свои классы внутрь classes/ как показано ниже, и у меня есть header.php который одновременно вызывает все файлы и имеет другие важные настройки, общие для всех файлов.

Теперь, если я использую spl_autoload_register() Сюда:

spl_autoload_register(function($class){
        include 'classes/'. $class .'.class.php';
    });

внутри inc/header.php файл и вызовите это header.php от моего index файл, то он отлично работает на моем локальном хосте, но когда я загружаю весь скрипт как есть на работающий хост, я получаю такие ошибки, как.

Warning: include(classes/filehandler.class.php) [function.include]: failed to open stream: No such file or directory in /home/.../public_html/....com/inc/header.php on line 9 

Line 9 это spl_autoload_register()

Я не понимаю, как такое могло случиться, и надеюсь, что у кого-нибудь есть хоть какое-то представление.

Спасибо

Это было полезно?

Решение

Чтобы показать, что я имею в виду в своих комментариях, добавьте этот код в свой файл index.php и удалите автозагрузчик из других файлов:

spl_autoload_register(function($class){
    $classesPath = dirname(__FILE__) . '/classes/';
    if (is_file($classFile = $classesPath . $class.'.class.php')) {
        include $classFile;
    }
});

Для inc/header.php:

spl_autoload_register(function($class){
    $classesPath = dirname(__FILE__) . '/../classes/';
    if (is_file($classFile = $classesPath . $class.'.class.php')) {
        include $classFile;
    }
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top