За последние 24 часа нас посетили 15038 программистов и 1763 робота. Сейчас ищут 1669 программистов ...

session_start требует класс Logger. __autoload не находит...

Тема в разделе "Прочие вопросы по PHP", создана пользователем MasKarAl, 21 апр 2011.

  1. MasKarAl

    MasKarAl Активный пользователь

    С нами с:
    19 мар 2009
    Сообщения:
    9
    Симпатии:
    0
    Исходный код:

    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, то всё работает.
     
  2. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    а причем тут session_start() к function __autoload?
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    забава какая

    а зачем целая отдельная функция? это индийский код? индийский кот. кот уже не торт!
     
  4. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    так ты читани для чего этот автолоад юзают :)
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.557
    Симпатии:
    631
    Это волшебная функция
     
  6. MasKarAl

    MasKarAl Активный пользователь

    С нами с:
    19 мар 2009
    Сообщения:
    9
    Симпатии:
    0
    Ошибка возникла в разрабатываемом коде.
    После недолгих поисков и локализации проблемы, код уменьшился до этих строк.

    Суть, насколько я понимаю, в том, что session_start где-то у себя внутрях вызывает загадочный Logger, и автолоадер подхватывает загрузку этого Logger-а, и, конечно, его не находит.

    .htaccess пуст, никаких сессион-хэндлеров не используется.

    Тема для меня остаётся загадкой.
     
  7. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    сюда приходит имя класса, а вызывать нужно файл, то есть ClassName.'.php';
    и сессии тут вообще не вижу каким боком причастны, если ошибка выдается при инклуде файла
     
  8. MasKarAl

    MasKarAl Активный пользователь

    С нами с:
    19 мар 2009
    Сообщения:
    9
    Симпатии:
    0
    Это я для примера торопился, '.php' не дописал. Суть не в этом.
    Как раз require_once тут ни при чём. Можно написать вместо него echo $ClassName и на экране будет Logger (но в этом случае не будет Fatal Error).
    И именно сессион_старт вызывает этот Логгер.

    Не зная, что с этим делать, поставил костыль вроде этого:
    function __autoload($class) {
    if ($class != 'Logger') require_once $class . '.php';
    }
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    возможно кто-то как-то умудрился повесить какой-то метод из этого логера на session_start но я хз есть ли такие механизмы
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    сделай поиск повсему проекту по session_start без скобок