在Apache、Ubuntu上设置新的本地PHP会话变量

sg2wtvxw  于 2023-08-02  发布在  PHP
关注(0)|答案(2)|浏览(123)

我试图更改默认会话和cookie路径为我的应用程序是托管在一个EC2服务器上,有多个网站托管之一。
我尝试了PHP和.htaccess方法
在PHP文件中

$currentCookieParams = session_get_cookie_params();

$path = '/session';

$rootDomain = '.example.com';

if($currentCookieParams["path"] != '/session') {
    
    session_set_cookie_params(

        $currentCookieParams["lifetime"],

        $path,

        $rootDomain,

        $currentCookieParams["secure"],

        $currentCookieParams["httponly"]

    );

}

字符串
in .htaccess

php_flag register_globals off
php_flag magic_quotes_gpc on

php_value session.cookie_path "/var/www/session"
php_value session.cookie_domain ".example.com"
php_value session.save_path "/var/www/session"


它在特定的文件夹中创建会话,但当我刷新页面时,会创建新的会话,而不是使用现有的会话。
此外,在第页上刷新所有会话参数,将其重置为默认值。
理想情况下,它应该从现有会话中获取。
我是否需要在Apache或Ubuntu本身中更改或进行任何配置?需要安装哪些模块?

smdncfj3

smdncfj31#

你似乎完全误解了session.cookie_path的含义。
这将指定您的会话cookie将被视为有效的 *URL路径 *。
路径/意味着cookie将从客户端发送回您的服务器,用于https://example.com/以下的每个URL。
路径为/foobar/意味着cookie将只为https://example.com/foobar/以下的每个URL发送。如果您现在正在访问https://example.com/somethingelse/,则使用此/foobar/路径设置的cookie将 * 不会 * 被发送回。
您将路径设置为/var/www/session-但您访问的URL不是以https://example.com/var/www/session开头,是吗?只有在该路径下,您的会话cookie现在才有效。
此设置与会话数据文件将存储在服务器上的位置无关- * 这 * 是session.save_path设置。

rseugnpd

rseugnpd2#

要更改托管在EC2服务器上的应用程序的会话和Cookie路径,您需要确保设置了正确的权限和配置。以下是您可以遵循的一些步骤:

1.检查文件权限:请确保要存储会话文件的文件夹(在本例中为/var/www/session)具有正确的文件权限。Web服务器(如Apache)应具有该文件夹的读写权限。
2.配置PHP设置:更新php.ini文件以设置会话保存路径和cookie路径。编辑php.ini文件并修改以下行:

;将会话保存路径设置为session.save
;设置会话cookie路径会话。cookie_path =“/session”
保存更改并重新启动Web服务器,以使新设置生效。

3.验证会话配置:进行更改后,创建一个测试PHP文件来检查会话配置。将以下代码添加到PHP文件并通过Web浏览器访问该文件:

“; echo“会话Cookie路径:“. ini_get(”会话.cookie_路径“)。“
“;?>
这将显示当前的会话和Cookie路径值。请确保它们反映了您所做的更改。

4.更新会话cookie域:如果您的应用程序是透过不同的子网域(例如app.example.com、api.example.com)存取,您可能需要相应地更新工作阶段Cookie网域。在PHP配置中,您可以按如下方式进行设置:

会话设置cookie参数(0,“/会话”,“. example.com”);
这将允许跨多个子域访问会话cookie。

5.重新启动Web服务器:对PHP配置或.htaccess文件进行任何更改后,重新启动Web服务器以应用修改。

通过这些步骤,您应该能够为应用程序设置所需的会话和Cookie路径。如果遇到任何问题,请记住检查Web服务器的错误日志中是否有任何错误或警告。
如果您仍然面临问题,请确保您已经安装了所需的PHP扩展,并且在其他Apache或PHP配置文件中没有冲突的配置。
祝你好运!

相关问题