Исходный код: function __autoload($className) { require_once $className; } session_start(); Результат в браузере: Warning: require_once(Logger): failed to open stream: No such file or directory in /path/to/file.php on line 4 Fatal error: require_once(): Failed opening required 'Logger' (include_path='.:/path1:/path2') in /path/to/file.php on line 4 В чём может быть причина? Если убрать autoload, то всё работает.
Ошибка возникла в разрабатываемом коде. После недолгих поисков и локализации проблемы, код уменьшился до этих строк. Суть, насколько я понимаю, в том, что session_start где-то у себя внутрях вызывает загадочный Logger, и автолоадер подхватывает загрузку этого Logger-а, и, конечно, его не находит. .htaccess пуст, никаких сессион-хэндлеров не используется. Тема для меня остаётся загадкой.
сюда приходит имя класса, а вызывать нужно файл, то есть ClassName.'.php'; и сессии тут вообще не вижу каким боком причастны, если ошибка выдается при инклуде файла
Это я для примера торопился, '.php' не дописал. Суть не в этом. Как раз require_once тут ни при чём. Можно написать вместо него echo $ClassName и на экране будет Logger (но в этом случае не будет Fatal Error). И именно сессион_старт вызывает этот Логгер. Не зная, что с этим делать, поставил костыль вроде этого: function __autoload($class) { if ($class != 'Logger') require_once $class . '.php'; }
возможно кто-то как-то умудрился повесить какой-то метод из этого логера на session_start но я хз есть ли такие механизмы