Различное поведение spl_autoload_register в сети и на локальном хосте
-
21-12-2019 - |
Вопрос
У меня есть следующая структура каталогов, я помещаю все свои классы внутрь 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;
}
});