所以我有一个运行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
作为客户端库,在LAMP设置中使用ISPConfig作为我的控制面板。
答案 0 :(得分:0)
好的,所以经过大量的头发拉动,感谢上帝,我有这些惊人的goog-foo技能,这就是解决方案。
如果您正在使用ISPConfig 3并遇到同样的问题,请按照我的说法做,不要问为什么,没时间解释。
在文件line 39
的{{1}}上,您会找到以下模板标记。
/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>
&gt; ISPConfig Admin Panel
&gt; Sites
&gt; Domain
并将该选项切换为已禁用并让其在服务器上更新,然后将该选项设置回PHP
。并且...完全是fab-fpm的光荣redis。
好的,你可以问为什么,开玩笑的早些时候:D
根据this thread发生的事情是joomla(和许多其他CMS 一样)尝试在运行时将PHP-FPM
更改为session.save_path
/ strong>根据CMS管理面板中的设置,但ISPConfig 3附带的“fpm-pool-template”试图从服务器控制面板中编辑该值,在此过程中它正在制作它redis
无法在运行时更改/覆盖该值。
如上所述here。
...无法覆盖使用php_admin_value设置的任何指令类型 通过.htaccess或ini_set()。
现在,安全吗? ..用指令删除这些标签。
删除上述行是完全安全的,这些是为用户编写的,以便根据他们的需要进一步修改here。此外,使用的函数有点过于严格(恕我直言),使用较小的独裁php
可以实现相同的效果。