воскресенье, 17 октября 2010 г.

register globals или почему unserialize у сессии падает

Пришлось сегодня вернуться к дописыванию старого проекта на пыхе, и начались проблемы. Сайт был написан на PHP5, а настроенного пакета библиотек у меня не сохранилось, так же как и мануала по работающим настройкам. Пришлось нечто нагуглить.. не совсем хорошее, ибо... MySQLi_STMT отрабатывало явно криво. Методом проб и ошибок нашла недостающие модули. Т.е. подключила под конец все, что были. Потом чисто удаляла те, которые с ошибками писались в лог. Но этого оказалось недостаточно. Потому что апач падал после рендеринга страницы. Пришлось ещё пальцем в небо удалить некоторые. И тьфу, тьфу, тьфу, prepared statement заработали.

Оставалось разобраться только с причиной возникновения ошибки: Warning: unserialize() expects parameter 1 to be string, object given
Оказалось в итоге, что всё было банально просто. Скатывая с нета настройки, я включила register_globals :D А в коде у меня активно использовалась переменная $user, которая из-за этой включенной директивы присваивала свои новые значения также $_SESSION['user'] :D Поэтому мои скрипты падали, когда я пыталась десериализовать значение из сессии :D В общем что бы там где не было написано в интернетах о настройках.. не забывайте, друзья мои, что регистрация глобальных переменных всегда должна быть отключена :D register_globals = Off

Комментариев нет:

Отправить комментарий