致命错误:未捕获错误:找不到类“会话”

时间:2018-03-14 15:56:22

标签: php

  

致命错误:未捕获错误:在C:\ var \ www \ html \ tools \ inc \ constants.php中找不到类'会话':122堆栈跟踪:#0 C:\ var \ www \ html \ tools \ config.php(92):require_once()#1 C:\ var \ www \ html \ tools \ header.php(1):require_once('C:\ var \ www \ html ...')#2 C: \ var \ www \ html \ tools \ index.php(1):require_once('C:\ var \ www \ html ...')#3 {main}抛出C:\ var \ www \ html \ tools \第122行的inc \ constants.php

有问题的代码:第121-138行

if(php_sapi_name() !== 'cli'){
  $session = new session();

  session_set_save_handler(array($session, 'open'),
                           array($session, 'close'),
                           array($session, 'read'),
                           array($session, 'write'),
                           array($session, 'destroy'),
                           array($session, 'gc'));
  register_shutdown_function('session_write_close');
  session_start();
}
if(DEBUG){
  ini_set('xdebug.var_display_max_depth',-1);
  ini_set('xdebug.var_display_max_data',-1);
  ini_set('xdebug.var_display_max_children',-1);
  set_time_limit(240);
}

我不知道如何修复它,我在网上找不到任何东西。我正在运行php7,我认为没有问题。有没有什么办法解决这一问题?我试过打电话给其他会议等等。

另一个名为的文件:

<?php
class session implements \SessionHandlerInterface {

    public function __construct() {
      // session_set_save_handler(
      //       array(&$this, 'open'),
      //       array(&$this, 'close'),
      //       array(&$this, 'read'),
      //       array(&$this, 'write'),
      //       array(&$this, 'destroy'),
      //       array(&$this, 'gc')
      //   );
      // session_start();
      // register_shutdown_function('session_write_close');
    }

    public function open($savePath, $session_name) {
      $db = new database(TRUE);
      $db->query("INSERT INTO session
                  SET session_id = :sessionName,
                  session_data = ''
                  ON DUPLICATE KEY 
                  UPDATE session_lastaccesstime = NOW()");
      $db->bind(':sessionName',$session_name);
      $db->execute();
      return true;
    }

    public function close() {
        return true;
    }

    public function read($id) {
      $db = new database(TRUE);
      $db->query("SELECT * FROM session WHERE session_id = :id");
      $db->bind(':id',$id);
      if ($db->execute()) {
        $result = $db->single(\PDO::FETCH_ASSOC);
        return $result["session_data"].'';
      }
      return '';
    }

    public function write($id, $data) {
      if ($data == null) {
        return true;
      }
      $db = new database(TRUE);
      $db->query("INSERT INTO session 
        SET session_id = ?, 
        session_data = ?
        ON DUPLICATE KEY UPDATE session_data = ?");
      $db->bind(1,$id);
      $db->bind(2,$data);
      $db->bind(3,$data);
      $db->execute();
      return true;
      //session_write_close();
    }

    public function destroy($id) {
      $db = new database(TRUE);
      $db->query("DELETE FROM session WHERE session_id = :id");
      $db->bind(':id',$id);
      $db->execute();
      return true;
    }

    public function gc($maxlifetime) {
      $db = new database(TRUE);
      $db->query("DELETE FROM session 
        WHERE session_lastaccesstime < DATE_SUB(NOW(),
        INTERVAL " . $lifetime . " SECOND)");
      $db->execute();
      return true;
    }
}

我尝试通过放置

来加载课程
  

require_once( “INC /类/ session.php文件”)

在if语句之后

,但这只是打开了更多的问题,而更多的类没有被调用。我将链接到GitHub,以便您可以看到实际发生的事情。

https://github.com/nfreader/newSS13tools

0 个答案:

没有答案