PHP / Apache如何从php.ini外部设置session.cookie_domain

时间:2009-07-22 18:08:01

标签: apache .htaccess php httpd.conf

我需要将Cookie限制到我的www子域名,这可以通过在php.ini文件中添加line session.cookie_domain = www.example.com来实现。但是我的服务器上有许多虚拟主机,所以我需要每个域都有不同的域。经过一段时间的网络搜索后,我尝试使用:

'SetEnv session.cookie_domain www.example.com' - in my httpd.conf
'php_flag session.cookie_domain www.example.com' in .htaccess

然而,两者似乎都阻止了cookie一起工作!

非常感谢任何帮助!

斯图

5 个答案:

答案 0 :(得分:3)

问题是php_flag实际上只适用于布尔值。因此,在使用php_flag命令时,您实际上是将cookie_domain设置为0,这就是它停止工作的原因。

对于文本值,您需要在.htaccess或apache配置中使用php_value。同时引用该值:

php_value session.cookie_domain ".domain.com"

请参阅:http://www.php.net/manual/en/configuration.changes.php

答案 1 :(得分:2)

实现此目的的最简单方法是使用session_set_cookie_params()而不是通过.htaccess设置它(.htaccess方法仅在PHP用作模块时才有效)。您可以通过以下方式使用它:

session_set_cookie_params(0, '/', 'www.example.com');
session_start();

答案 2 :(得分:1)

另一种选择是使用ini_set

ini_set("session.cookie_domain", "www.example.com");

答案 3 :(得分:0)

就我而言,这个对我有用:

setcookie("name", $Value4Name, time()+$3600 , "/", ".domain.com");

但这是为你录制域名根目录的cookie。

欢呼声 PC

答案 4 :(得分:0)

此代码100%有效,将此代码设置在.htaccess

文件中
php_value session.cookie_path "/"
php_value session.cookie_domain ".localhost"

或文件JavaScript的代码

function my_cookie($name, $value, $expires = 0) {
    return setcookie($name, $value, $expires, '/', 'example.com', ...);
}