Uncaught RedisException: session_write_close()

Итак, у меня есть сайт под управлением Joomla, и я попытался установить session handler в redis из панели администратора CMS. Я получаю следующую ошибку на домашней странице и на каждой другой странице посещаемого веб-сайта.

Error: Failed to start application: Connection closed
Fatal error: Uncaught RedisException: Connection closed in /var/www/xxxx/libraries/joomla/session/handler/native.php:194 Stack trace: #0 /var/www/xxxx/libraries/joomla/session/handler/native.php(194): session_write_close() #1 [internal function]: JSessionHandlerNative->save() #2 {main} thrown in /var/www/clients/client3/web9/web/libraries/joomla/session/handler/native.php on line 194

Мой сервер настроен с php-fpm по умолчанию теперь интересно то, что если я изменю php-wrapper / module для запуска с Fast-CGI (из моей панели управления сервером) все работает отлично.

Кстати, я использую PHP-Redis в качестве клиентской библиотеки на Ubuntu и ISPConfig в качестве моей панели управления для настройки LAMP.

1 ответ

Решение

Хорошо, так что после того, как я много потянул за волосы и, слава Богу, у меня есть эти удивительные навыки Гуг-фу, вот решение.

Если вы используете ISPConfig 3 и столкнулись с той же проблемой, просто сделайте, как я говорю ниже, не спрашивайте почему, нет времени объяснять.

На line 39 файла /usr/local/ispconfig/server/conf/php_fpm_pool.conf.master Вы найдете следующие теги шаблона.

<tmpl_if name='custom_session_save_path' op='!=' value='y'>
php_admin_value[session.save_path] = <tmpl_var name='document_root'>/tmp
</tmpl_if>

Просто удали это! Да, вы правильно прочитали, вы должны удалить эти строки, парень. И после сохранения изменений из админ-панели, перейдите

ISPConfig Admin Panel > Sites > Domain > PHP

и переключите эту опцию на отключенную, и пусть она обновится на сервере, а затем установите эту опцию обратно PHP-FPM, И... ааааа, великолепный Redis с совершенно потрясающим php-fpm.

Хорошо, вы можете спросить почему, шучу раньше:D

Согласно этой теме, Joomla(как и многие другие CMS) пытается изменить session.save_path в redis во время выполнения в соответствии с настройками, сделанными в панели администратора CMS, но "fpm-pool-template", поставляемый с ISPConfig 3, пытался сделать это значение редактируемым из панели управления сервером, в процессе чего это делало невозможным за php изменить / перезаписать это значение во время выполнения.

Как описано здесь.

... Любой тип директивы, установленный с помощью php_admin_value, не может быть переопределен с помощью.htaccess или ini_set().

Теперь, это безопасно?... удалить эти теги с помощью директив.

Абсолютно безопасно удалить вышеупомянутые строки, и они были написаны для пользователей, чтобы дополнительно изменить их потребности, как обсуждалось здесь. Кроме того, используемая функция была слишком строгой (ИМХО), и такого же эффекта можно было бы достичь, используя менее авторитарный php_value,

Другие вопросы по тегам