修改php.ini中的session.save_path为一个确实存在的目录,比如c:\php\temp

解决方案 »

  1.   

    session.save_handler = files
    session.save_path = /tmp
    在php程序所在驱动器的根目录下建立目录tmp并给以完全访问权限session.save_handler = user
    执行session_set_save_handler并确保各参数所指函数存在且正确无误
      

  2.   

    session.save_handler = files
    我在这个样的情况下没错,这个是把SESSION保存到一个文件中session.save_handler = user
    这个是要把SESSION保存到数据库中去,但是如果我这样修改了,那么所有的PHP页面都不执行,显示的是没有这个页面,包括<? phpinfo() ?>都没有用了!如果session.save_handler = files的时候应用上面一段代码,则报错!
    有人用过吗,请指教!
      

  3.   

    不是和你说了吗?确保各参数所指函数存在且正确无误
    看看手册上的这段session_set_save_handler
    (PHP 4 >= 4.0.0)session_set_save_handler --  Sets user-level session storage functions 
    Descriptionvoid session_set_save_handler (string open, string close, string read, string write, string destroy, string gc)
    session_set_save_handler() sets the user-level session storage functions which are used for storing and retrieving data associated with a session. This is most useful when a storage method other than those supplied by PHP sessions is preferred. i.e. Storing the session data in a local database. Note: You must set the configuration option session.save_handler to user in your php.ini file for session_set_save_handler() to take effect. Note: The "write" handler is not executed until after the output stream is closed. Thus, output from debugging statements in the "write" handler will never be seen in the browser. If debugging output is necessary, it is suggested that the debug output be written to a file instead. The following example provides file based session storage similar to the PHP sessions default save handler files. This example could easily be extended to cover database storage using your favorite PHP supported database engine. Example 1. session_set_save_handler() example ?>
    <?php
    function open ($save_path, $session_name) {
      global $sess_save_path, $sess_session_name;
           
      $sess_save_path = $save_path;
      $sess_session_name = $session_name;
      return(true);
    }function close() {
      return(true);
    }function read ($id) {
      global $sess_save_path, $sess_session_name;  $sess_file = "$sess_save_path/sess_$id";
      if ($fp = @fopen($sess_file, "r")) {
        $sess_data = fread($fp, filesize($sess_file));
        return($sess_data);
      } else {
        return("");
      }}function write ($id, $sess_data) {
      global $sess_save_path, $sess_session_name;  $sess_file = "$sess_save_path/sess_$id";
      if ($fp = @fopen($sess_file, "w")) {
        return(fwrite($fp, $sess_data));
      } else {
        return(false);
      }}function destroy ($id) {
      global $sess_save_path, $sess_session_name;
           
      $sess_file = "$sess_save_path/sess_$id";
      return(@unlink($sess_file));
    }/*********************************************
     * WARNING - You will need to implement some *
     * sort of garbage collection routine here.  *
     *********************************************/
    function gc ($maxlifetime) {
      return true;
    }session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");session_start();// proceed to use sessions normally?>
      

  4.   

    http://cn2.php.net/manual/zh/function.session-module-name.phphttp://cn2.php.net/manual/zh/function.session-set-save-handler.php
      

  5.   

    不用修改php.ini,只要使用session_set_save_handler就可以了。
    然后session_start,和正常使用session一样使用。
    你可以把这些函数写在session.inc.php里面,每次使用session之前就include这个文件,ok。
      

  6.   

    我就是这样作的,但是报错呀Warning: Unknown(): Failed to write session data (user). Please verify that the current setting of session.save_path is correct (c:\php\temp) in Unknown on line 0
    我在别的地方有session就没问题
      

  7.   

    报这样的错误说明还是使用的文件session,即php自带的存储session数据的方式。
    或许是php版本问题。
    用最新版本试试