Apache 别名正在共享会话

问题描述 投票:0回答:1

我在 Ubuntu 22.04 上有 Apache2,带有 php 和 mysql。我创建了两个内部网站, site1 是 https://web.domain.cz 并且 site2 与别名位于同一虚拟主机中https://web.domain.cz/second(这是第一个网站的某种管理)

这是我的虚拟主机配置

<VirtualHost *:443>
    ServerName web.domain.cz
    DocumentRoot /var/www/web

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/xxx.pem
    SSLCertificateKeyFile /etc/ssl/private/xxx.key

    <Directory /var/www/web>
        Require all granted
    </Directory>

    <Files dbh.php>
        Require all denied
    </Files>

    Alias /second /var/www/second
    <Directory /var/www/second>
       Require all granted
    </Directory>

</VirtualHost>
<VirtualHost *:80>
    ServerName web.domain.cz
    Redirect / https://web.domain.cz/
</VirtualHost>

最疯狂的事情是,当我在一个网站上注销(

session_destroy();
)时,我在第二个网站上也注销了。当我在一个网站上更改(相同)会话变量时,它会在第二个网站上更改(例如,我已将当前排序顺序存储在会话变量中,如果我在一个网站上更改排序,它也会在第二个网站上更改)。

为什么要共享会话变量以及我可以用它做什么?

(我没有使用任何 PHP 框架)

php apache session
1个回答
2
投票

PHP 会话基于 cookie,默认情况下 cookie 按域保存,由于您的 2 个站点使用相同的域,因此它们共享相同的会话。

您可以通过在会话开始时提供信息来区分不同站点来覆盖此行为,例如:

session_start([
    'cookie_path'=>'second'
]);
© www.soinside.com 2019 - 2024. All rights reserved.