Php 未捕获的异常:会话\写入\关闭()

Php 未捕获的异常:会话\写入\关闭(),php,redis,fpm,phpredis,Php,Redis,Fpm,Phpredis,因此,我有一个运行joomla的网站,我尝试从CMS管理仪表板将会话处理程序设置为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 Sta

因此,我有一个运行joomla的网站,我尝试从CMS管理仪表板将
会话处理程序设置为
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包装器/模块更改为使用
Fast CGI
(从我的服务器控制面板)运行,那么一切都可以完美运行


顺便说一句,我在Ubuntu上使用
PHP Redis
作为客户端库,并使用ISPConfig作为我的控制面板进行LAMP设置。

好的,在做了很多工作之后,感谢上帝,我掌握了这些惊人的goog-foo技能,下面是解决方案

如果您正在使用ISPConfig 3,并且遇到了相同的问题,请按照我下面所说的做,不要问为什么,没有时间解释

在文件
/usr/local/ispconfig/server/conf/php\u fpm\u pool.conf.master的
第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>

php_admin_值[session.save_path]=/tmp
删除它!是的,你读对了,你得删掉那些台词。 保存管理面板中的更改后,转到

ISPConfig管理面板
站点
PHP

然后将该选项切换为disabled并在服务器上更新,然后将该选项设置回
PHP-FPM
。还有…啊,光彩夺目的redis,完全是晶圆的php fpm

好吧,你可以问为什么,我刚才在开玩笑:D

根据所发生的情况,joomla(与许多其他CMS一样)试图更改
会话。在运行期间,根据CMS的管理面板中的设置,将路径
保存到
redis
,但“fpm池模板”ISPConfig 3随附的,试图从服务器控制面板编辑该值,在此过程中,
php
无法在运行时更改/覆盖该值

如上所述

…无法重写使用php_admin_值设置的任何指令类型 by.htaccess或ini_set()

现在,安全吗?。使用指令删除这些标记

删除前面提到的行是完全安全的,这些行是为用户编写的,以便根据他们的需要进行进一步修改。此外,所使用的函数有点过于严格(IMHO),使用较小的权威
php\u值
也可以达到同样的效果