[英]PHP: Fatal error: Cannot redeclare class Session
When update my PHP version to 5.4 (xampp 1.8.0) I see a Fatal error : 将我的PHP版本更新到5.4(xampp 1.8.0)时,出现致命错误 :
Fatal error: Cannot redeclare class Session in C:\\xampp\\htdocs\\vs\\classes\\session.class.php on line 5
致命错误:无法在第5行的C:\\ xampp \\ htdocs \\ vs \\ classes \\ session.class.php中重新声明类Session
Is this problem related to update PHP
version's? 这个问题与更新
PHP
版本有关吗?
session.class.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);
}
}
It seems that you are including session.class.php more than once... or you declare the class Session in another file that is included. 似乎您多次包含了session.class.php ...或在包含的另一个文件中声明了Session类。
As @cegfault says: include_once
and require_once
can be used to prevent this. 正如@cegfault所说:
include_once
和require_once
可以用来防止这种情况。
But it is better to make sure that you only include the file just once (less memory usage). 但是最好确保只包含一次文件(减少内存使用)。
include_once
and require_once
are just fail saves. include_once
和require_once
只是失败保存。
Try wrapping your class in if
statement like this: 尝试将类包装在
if
语句中,如下所示:
if (class_exists('Session') != true) {
class Session { ... }
}
This will prevent the error, if your code structure is complex/large 如果您的代码结构复杂/较大,这将防止错误
See the class_exists()
documentation 请参阅
class_exists()
文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.