Ошибка сессии в PHP7 при логине в менеджере
Столкнулся с ошибкой PHP session_start() при попытке залогиниться в менеджере (PHP 7 + MODX REVO 2.5.0). В результате войти в менеджер не получается — выбрасывает на страницу с формой входа без каких-либо сообщений. Чичтил куки, удалял кэш, очищал таблицу modx_session — результат тот же. Одновременно нет никаких проблем с логином в контекст web через Login. Раньше с авторизацией в менеджере все было в порядке. Перешел на PHP 5.6 авторизация заработала.
Лог PHP:
PHP Warning: session_start(): Session callback expects true/false return value in ...../core/model/modx/modx.class.php on line 2270
В журнале ошибок менеджера:
(ERROR @ ......../core/model/modx/moduser.class.php: 355) PHP warning: session_regenerate_id(): Cannot regenerate session id — session is not active
Кто-нибудь сталкивался с подобной проблемой? Хотелось бы работать на PHP7.
Лог PHP:
PHP Warning: session_start(): Session callback expects true/false return value in ...../core/model/modx/modx.class.php on line 2270
В журнале ошибок менеджера:
(ERROR @ ......../core/model/modx/moduser.class.php: 355) PHP warning: session_regenerate_id(): Cannot regenerate session id — session is not active
Кто-нибудь сталкивался с подобной проблемой? Хотелось бы работать на PHP7.
Комментарии: 12
в свое время пробовал с php7.
такая ошибка мешала или другая уже не помню
решилось правкой кода:
файл:
core/model/modx/modmanagerresponse.class.php
функция:
public function instantiateController($className,$getInstanceMethod = 'getInstance') {
…
было так:
$this->modx->controller = call_user_func_array(array($c,$getInstanceMethod),array($this->modx,$className,$this->action));
делал так:
$this->modx->controller = $c->getInstance($this->modx,$className,$this->action);
додумался не сам. подсказал друг. мне помогло
такая ошибка мешала или другая уже не помню
решилось правкой кода:
файл:
core/model/modx/modmanagerresponse.class.php
функция:
public function instantiateController($className,$getInstanceMethod = 'getInstance') {
…
было так:
$this->modx->controller = call_user_func_array(array($c,$getInstanceMethod),array($this->modx,$className,$this->action));
делал так:
$this->modx->controller = $c->getInstance($this->modx,$className,$this->action);
додумался не сам. подсказал друг. мне помогло
Спасибо! Не хотелось бы хаки делать, но, видимо, придется.
То, что ошибка в MODX файле еще не значит, что виноват MODX. Вы уверены, что php7 у вас правильно установлен и сконфигурирован? Мои сайты (с десяток) на MODX уже все работают на php7 и проблем нет.
Я этого не утверждаю. И на PHP 5.6. эта ошибка повторилась. Я поигрался с системными настройками движка, отключал, включал anonymous_sessions. В итоге с включенной опцией anonymous_sessions все заработало. Если ее отключить, то сперва нужно залогинться в контекст web, а потом уже авторизовться в менеджере. Иначе в менеджер не пустит.
Иван, поделись, пожалуйста, правильным конфигом для php7 :)
Что именно нужно? MODX замечательно работает на PHP7 сам по себе. Возможно какие-то специфические дополнения могут сбоить, но чистый MODX из коробки работает на стандартной конфигурации. Версия 7.1 — тоже полет нормальный.
Да у меня тоже после переключения сайта на php 7. На других версиях — без ошибок.
Блин, чтобы яндекс не видел, нужно на продакшене выключать показ ошибок и писать все сугубо в лог, как маленькие блин.
Катательно сессий, то проблема есть, раз issues заведены, но я ничего такого специфического не использовал, чтобы такие ошибки могли проявиться.
Катательно сессий, то проблема есть, раз issues заведены, но я ничего такого специфического не использовал, чтобы такие ошибки могли проявиться.
Может с правами что на папку, куда сессии складываются
Здесь все настроено верно.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.