未捕获的 RedisException:session_write_close()
Uncaught RedisException: session_write_close()
所以我有一个网站 运行ning joomla,我尝试从 CMS 管理仪表板将 session handler
设置为 redis
。我在主页和我访问的网站的所有其他页面上收到以下错误。
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
(来自我的服务器控制面板)一切工作完美。
顺便说一句,我在 Ubuntu 上使用 PHP-Redis
作为客户端库,并使用 ISPConfig 作为 LAMP 设置的控制面板。
好吧,在费尽周折之后,谢天谢地,我有了这些惊人的 goog-foo 技能,这就是解决方案。
如果你使用的是ISPConfig 3,遇到同样的问题,按照我下面说的去做,不要问为什么,没时间解释。
在文件 /usr/local/ispconfig/server/conf/php_fpm_pool.conf.master
的 line 39
上,您将找到以下模板标签。
<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
。还有....aahhh 非常棒的 redis php-fpm.
好吧,你可以问为什么,开玩笑的earlier:D
根据 this thread 发生的事情是 joomla(像许多其他 CMS)试图将 session.save_path
更改为 redis
在运行时 根据 CMS 管理面板中的设置,但是 ISPConfig 3 附带的 "fpm-pool-template" 试图使该值可从服务器控制面板编辑,在该过程使 php
无法在运行时 change/overwrite 该值。
如所述here。
...Any directive type set with php_admin_value can not be overridden
by .htaccess or ini_set().
现在,安全吗? ..用指令删除这些标签。
删除上述行是绝对安全的,这些行是为用户编写的,可以根据讨论的需要进一步修改 here。此外,所使用的功能有点过于严格(恕我直言),使用较不专制的 php_value
也可以达到相同的效果。
所以我有一个网站 运行ning joomla,我尝试从 CMS 管理仪表板将 session handler
设置为 redis
。我在主页和我访问的网站的所有其他页面上收到以下错误。
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
(来自我的服务器控制面板)一切工作完美。
顺便说一句,我在 Ubuntu 上使用 PHP-Redis
作为客户端库,并使用 ISPConfig 作为 LAMP 设置的控制面板。
好吧,在费尽周折之后,谢天谢地,我有了这些惊人的 goog-foo 技能,这就是解决方案。
如果你使用的是ISPConfig 3,遇到同样的问题,按照我下面说的去做,不要问为什么,没时间解释。
在文件 /usr/local/ispconfig/server/conf/php_fpm_pool.conf.master
的 line 39
上,您将找到以下模板标签。
<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
。还有....aahhh 非常棒的 redis php-fpm.
好吧,你可以问为什么,开玩笑的earlier:D
根据 this thread 发生的事情是 joomla(像许多其他 CMS)试图将 session.save_path
更改为 redis
在运行时 根据 CMS 管理面板中的设置,但是 ISPConfig 3 附带的 "fpm-pool-template" 试图使该值可从服务器控制面板编辑,在该过程使 php
无法在运行时 change/overwrite 该值。
如所述here。
...Any directive type set with php_admin_value can not be overridden by .htaccess or ini_set().
现在,安全吗? ..用指令删除这些标签。
删除上述行是绝对安全的,这些行是为用户编写的,可以根据讨论的需要进一步修改 here。此外,所使用的功能有点过于严格(恕我直言),使用较不专制的 php_value
也可以达到相同的效果。