Вы не вошли.
Страницы 1
у пользователя blaack_d попрбовал добавить "прим. администратора" (было пустое), и выдало:
Ошибка сервера
На веб-сайте произошла ошибка при получении http://samovarchik.info/profile.php?sec … ials&id=40. Веб-сайт может быть закрыт на обслуживание или настроен неправильно.
Вот несколько советов и рекомендаций:
Обновите эту страницу позже.
выдает аналогичную ошибку когда пытаешься сменить ему часовой пояс
Исправил.
Сама по себе проблема была банальной - отсутствие префикса пространства имен перед именем класса. Но это только вершина айсберга. Куда более странным было то, что вместо исключения от автозагрузчика классов мы имели "белую страницу смерти" из-за того, что скрипт завершался фатальной ошибкой. Из документации следует, что для PHP >= 5.3.0 такого быть не должно. Но оно есть!
Простейший код, воспроизводящий ошибку:
<?php
set_exception_handler(function (Exception $ex) {
echo $ex->getMessage().'<br />';
});
spl_autoload_register(function ($className) {
echo $className.'<br/>';
if (!class_exists($className, false))
throw new Exception('Error: '.$className.' does not exist!');
});
Test::foo();
?>
Выведет нам только:
Test
Загвоздка тут именно в том, что мы вызываем статический метод класса.
Если вызов метода заменить на создание класса:
$test = new Test();
то мы, как и ожидалось, увидим:
Test
Error: Test does not exist!
Обращение к константе несуществующего класса даст тот же эффект - фатальную ошибку, а вот обращение к статической переменной выбросит исключение.
Адекватного решения проблемы пока не вижу.
может он там "тюненный" какой - на хостинге?
Я на своем компьютере это тоже воспроизвожу.
Больше похоже на "особенность" PHP. Позже вернусь к этому вопросу, сегодня и так весь день убил на него (будет обидно, если решение элементарное и лежит на поверхности :) ). Оно не сильно критично на данный момент - что так, что так действие по сохранению параметров в профиле оканчивалось бы фатально, разница только в том, что при выбросе исключения было бы более-менее понятное сообщение об ошибке в браузер, а так пришлось лезть в логи.
Редактировался yoorick (19.09.2012, 00:05:22)
И все-таки это - баг PHP.
Интересно, что самый ранний тикет о нем, который я увидел, создан еще в 2010 году, и был закрыт разработчиками под предлогом "так и должно быть".
В последнем же тикете, после моего комментария активировалась дискуссия между разработчиками и создателем тикета, в результате которой баг вроде бы признали, но сам тикет пока остается закрытым.
Буду следить за развитием событий :)
Страницы 1
[ Сгенерировано за 0.019 сек, 8 запросов выполнено - Использовано памяти: 1.9 MiB (Пик: 1.96 MiB) ]