我正在创建一个Web应用程序,我需要将其部署为多个Web应用程序实例 假设我正在部署应用程序
root
|_ app1
|_ app2
|_ app3
app2
dan app3
都是通过git从app1
克隆的。之后我做composer install
并让他们安装..
当我登录app1
时一切正常,但登录app2
后,我的app1
登录信息已无法清除。我的第一个判决是会话冲突,但我没有发现任何改变Laravel会话密钥的行为......所以我尝试更改App Key但它没有做任何事情。
任何人都可以指点我一些领导或回答?谢谢
P.S:我访问via子文件夹(例如:http://mydomain/app1
,http://mydomain/app2
,http://mydomain/app3
)
我尝试过的事情:
修改:changing session.cookie and assign different names
to each site
是正确的解决方案
答案 0 :(得分:1)
出于安全原因,您的会话将被终止,因为它们都存储在同一个表中。
基本上,您需要为每个多站点设置不同的配置。
转到app/bootstrap/start.php
替换它:
$env = $app->detectEnvironment(array(
'local' => array('homestead'),
));
这个(例子):
$env = $app->detectEnvironment([
"app1" => ["app1.mysite.com"],
"app2" => ["app2.mysite.com"]
]);
然后在app\config
文件夹中,创建两个新文件夹app1
和app2
。
无论您放置哪些配置文件,都会在访问相应网站时加载。
如果配置文件不存在,将加载全局默认值。
最后,除非您希望明确区分关注点,否则不需要为每个网站设置不同的应用文件夹。
答案 1 :(得分:1)
更改session.cookie
是正确的解决方案!
开始在配置上创建session.php
,并为每个应用为cookie
添加不同的值
<?php
return [
'cookie' => 'app1'
];
<?php
return [
'cookie' => 'app2'
];
之后清除你的浏览器&#39; COOKIE ! (这个很重要!) 如果不清除,您的上次登录行为仍会发生冲突,并且该节目无法继续播放。
那就是它! 您可以拥有多个Laravel站点,这些站点在不同的子文件夹中彼此重复。