更换session保存的路径

用户可通过 ini_set()session_save_path() 函数来设置 session.save_path。在 session.save_path中应存在一个用户保存用户tmp文件的路径,但session.save_path的句法为:

   [/PATH]  或  [N;/PATH]

  N可以为字符串(应为数字)

   例如:

  1. session_save_path("/DIR/WHERE/YOU/HAVE/ACCESS")
    2. session_save_path("5;/DIR/WHERE/YOU/HAVE/ACCESS")

  如果用户使用了多 个";"字符,就可以创建伪造目录结构减少"../",绕过safe_mode和open_basedir限制访问其他目录。

 

session.save_path 定义了传递给存储处理器的参数。如果选择了默认的 files 文件处理器,则此值是创建文件的路径。默认为 /tmp

 

此指令还有一个可选的 N 参数来决定会话文件分布的目录深度。例如,设定为 '5;/tmp' 将使创建的会话文件和路径类似于 /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If 。要使用 N 参数,必须在使用前先创建好这些目录。在 ext/session 目录下有个小的 shell 脚本名叫 mod_files.sh 可以用来做这件事。此外注意如果使用了 N 参数并且 N 大于 0,那么将不会执行自动垃圾回收,更多信息见 php.ini 。另外如果用了 N 参数,要确保将 session.save_path 的值用双引号 "quotes" 括起来,因为分隔符分号( ; )在 php.ini 中也是注释符号。

 

另外 session_save_path() 必须写在 session_start() 的前面,session_save_path() 也可以获得当前session存放的路径,尝试:

 

 
<?php
echo session_save_path();
 

 

 

你可能感兴趣的:(PHP,ext,脚本,Access)