我正在使用Heroku为我们的一个使用Kirby CMS的网站托管登台服务器。但是,当我进入管理面板来管理内容时,我经常会注销。经过研究,我得出的结论是,根据this Heroku article,登录会话一直处于关闭状态:
每当一个应用程序运行在多台服务器(或Dyno,例如Heroku上的dyno)上,并且dynos从负载均衡器随机接收流量时,需要将PHP的会话支持配置为不使用基于标准文件的会话。
如果将会话存储在每个dyno的文件系统上,则来自用户的下一个请求(在本示例中假定该用户先前已登录,因此该请求将包含会话cookie)可能会在另一个dyno上结束,会话信息不存在的地方。
如果我在本地或其他服务器上运行应用程序,则不会出现此问题。因此,显然问题出在我的Heroku设置和会话上。
让我感到困惑的是,我使用了一个测功机,上面的引言说:
只要应用程序在多台服务器(或dyno ,如Heroku中的情况)上运行...
所以,如果我使用一个测功机,那我应该不会有这个问题?还是Heroku仍然使用负载平衡器?
由于我正在使用该服务器进行登台,并且几乎没有任何流量,因此我不需要负载平衡器,并且使用基于文件的会话也没有问题。此外,我们不在生产服务器上使用负载平衡器,并且那里也没有这个问题。
如何强制Heroku使用基于文件的会话并避免使用负载平衡器?