2012-08-02 2 views
0

를 재 선언 할 수 없습니다 때 갱신 5.4 (XAMPP 1.8.0) 내가 보는 내 PHP 버전 치명적인 오류 :PHP 치명적인 오류 : 클래스 세션

Fatal error: Cannot redeclare class Session in C:\xampp\htdocs\vs\classes\session.class.php on line 5

PHP 버전의 업데이트와 관련된이 문제인가?

session.class.php :

<?php 
defined('_VALID') or die('Restricted Access!'); 

class Session 
{ // <-- This Is Line 5 
    private static $_sess_db; 

    public static function open() { 
     global $config;  

     if (self::$_sess_db = mysql_connect($config['db_host'], $config['db_user'], $config['db_pass'])) { 
      return mysql_select_db($config['db_name'], self::$_sess_db); 
     } 

     return false; 
    } 

    public static function close() { 
     return mysql_close(self::$_sess_db); 
    } 

    public static function read($session_id) { 
     $sql = sprintf("SELECT `session_data` FROM `sessions` WHERE `session_id` = '%s'", mysql_real_escape_string($session_id)); 
     if ($result = mysql_query($sql, self::$_sess_db)) { 
      if (mysql_num_rows($result)) { 
       $record = mysql_fetch_assoc($result); 
       return $record['session_data']; 
      } 
     } 

     return ''; 
    } 

    public static function write($session_id, $session_data) 
    { 
     $sql = sprintf("REPLACE INTO `sessions` VALUES('%s', '%s', '%s')", mysql_real_escape_string($session_id), 
         mysql_real_escape_string(time()), mysql_real_escape_string($session_data)); 

     return mysql_query($sql, self::$_sess_db); 
    } 

    public static function destroy($session_id) 
    { 
     $sql = sprintf("DELETE FROM `sessions` WHERE `session` = '%s'", $session_id); 
     return mysql_query($sql, self::$_sess_db); 
    } 

    public static function gc($max) { 
     $sql = sprintf("DELETE FROM `sessions` WHERE `session_expires` < '%s'", mysql_real_escape_string(time() - $max)); 
     return mysql_query($sql, self::$_sess_db); 
    } 
} 
+1

을 참조/복잡한 큰 경우

if (class_exists('Session') != true) { class Session { ... } } 

이 방법 페이지 존재이며, 오류를 방지 할 수 있습니다 전화 했어? 어딘가에 두 번'include' 또는'require'가있는 것 같습니다. 대신에 'include_once' 또는'require_once'를 사용해보십시오 – cegfault

+0

[여러 번 물었습니다] (http://stackoverflow.com/search?q=%5Bphp%5D+Fatal+error%3A+Cannot+redeclare+class) –

답변

4

당신이 한 번 이상 session.class.php 포함되어 있습니다 ... 또는 당신이 포함 된 다른 파일에 클래스 세션을 선언 할 것으로 보인다.

@cegfault가 말하길 : include_oncerequire_once은이를 방지하기 위해 사용할 수 있습니다.

하지만 파일을 한 번만 포함하면됩니다 (메모리 사용량이 적음). include_oncerequire_once은 실패 저장에 불과합니다.

+1

'include_once'와'require_once'가 session.class.php를 두 번 이상 포함하는 – cegfault

+0

i를 막기 위해 사용될 수 있다고 언급해야합니다. 그래서 이제는 그 중 하나를 제거하는 것으로 수정되었습니다. 감사. – BBKing

관련 문제