Alv*_*aro 3 cakephp cakephp-2.0 cakephp-2.1 cakephp-2.2
随机地,当我加载页面时,它会显示以下错误:
Notice (8): session_start(): ps_files_cleanup_dir: opendir(C:\Windows\TEMP) failed: No such file or directory (2) [CORE\Cake\Model\Datasource\CakeSession.php, line 615]
Run Code Online (Sandbox Code Playgroud)
我正在使用CakePHP 2.2.这里发生了什么??
PHP中有一个会话垃圾收集器,只要访问PHP站点就有可能执行.这是在php.ini中定义的:
session.gc_probability
session.gc_divisor
session.gc_maxlifetime
session.save_path
Run Code Online (Sandbox Code Playgroud)
http://www.php.net/manual/en/session.configuration.php
你有gc_probability/gc_divisor的机会,如果他们比gc_maxlifetime年长地处save_path的sess_ <PHPSESSID>文件被删除.
默认情况下,在Windows服务器上将session.save_path设置为C:\ Windows\Temp.我怀疑这几乎总是存在的.
您需要提供正在执行PHP脚本的任何帐户(默认情况下,如果我们正在谈论IIS,则为IUSR)高级安全性下的"列表文件夹"权限.此特权使用PHP列出在C文件:\ WINDOWS\TEMP(或任何位置已配置),以确定sess_ <PHPSESSID>,它需要通过解析的实际名称.然后它会遍历这些文件中的每一个,如果修改日期早于maxlifetime,它将删除该文件.除了列表文件夹之外,它具有默认所需的所有权限.奇怪的是,IIS_IUSRS(我相信用于应用程序池的组)被授予此权限,但不是IUSR.
如果你很好奇IUSR能够创建那些因为"用户"被授予遍历文件夹的权限sess_ <PHPSESSID>文件并创建文件的权限(这不可能发生一个列表操作了这一点).看来IUSR是Authenticated Users或Users组的未说出的成员,来自此处执行的测试.还有一个特殊的"CREATOR OWNER"权限集,为所有者提供他们创建的文件的完全权限.这是IUSR获得实际删除文件的权限的地方.这有点令人费解,但你唯一需要担心的是"列表文件夹".