php.ini 的 session.save_path 的正确用法是啥?

Posted

技术标签:

【中文标题】php.ini 的 session.save_path 的正确用法是啥?【英文标题】:What's the proper use of php.ini's session.save_path?php.ini 的 session.save_path 的正确用法是什么? 【发布时间】:2010-09-15 21:06:14 【问题描述】:

我在 Windows/IIS 上运行 php

我的会话变量似乎没有逐页保留。

这段代码……

//echos out the session variables in a nice format for inspection
echo "<p><pre>";
print_r($_SESSION);
echo "</pre></p>";

…输出空白值,像这样…

大批 ( [s_firstvar] => [s_var2] => [s_第三] => [s_numberfour] => [s_youget] => [s_thepoint] => [] => )

我在论坛上找到了建议……

我最近遇到了类似的问题(Win2000,IIS),原来是PHP 对会话数据所在的任何目录都没有写访问权限 存储在其中。您可能需要对此进行调查。

你设置了 session.save_path 吗?

php.ini 的 session.save_path 的正确用法是什么?还有,这是我的问题吗?

【问题讨论】:

【参考方案1】:

你能发布更多你的会话代码吗?一些基础知识:

您开始会话了吗? (session_start()) 您是否检查过您的保存路径是否具有适当的权限(OP 中未提及) session.save_path 实际上只是将会话保存到的目录。如果您在共享服务上,最好将其设置为与默认临时目录不同的目录(因为您的会话也会与其他应用程序的会话混合,并可能导致更大的会话冲突机会) 如果您要更改会话配置(如 save_path,则必须在调用 session_start() 之前设置这些配置。

【讨论】:

【参考方案2】:

哎呀。我发现我在赋值时没有使用正确的语法:

不起作用:

$_SESSION['$s_firstvar'] = 3;

有效:

$_SESSION['s_firstvar'] = 3;

【讨论】:

只是为了挑剔,你应该养成引用变量的习惯: $_SESSION['s_firstvar'] = 3; (例如) 确实,不引用它们会产生常量和一些开销 还有 ++ 在 engie 头像上! ;-) 编辑:根据欧文的建议引用变量。

以上是关于php.ini 的 session.save_path 的正确用法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

PHP引擎php.ini参数优化

php如何修改ini文件

centos下php.ini配置项

php命令行模式下加载的php.ini文件可能和web模式下加载的php.ini不一致

php.ini配置文件详解

php引擎文件php.ini优化参数