session_start引发致命错误

时间:2010-09-16 17:24:11

标签: php mysql apache session

我目前正在为我的网站开发一个小型CMS,并且在调用session_start()时出现以下错误:

  

致命错误:在第0行的“未知”中没有堆栈帧的情况下抛出异常

我将PDO数据库连接存储在$ _SESSION中,因此我需要在启动脚本后直接调用session_start()。 这是一个片段:

function initDB($config){ //initalizes the database connection
try{
    @session_start();
}catch (Exception $e){

}
$dsn = 'mysql:dbname='.$config['db'].';host='.$config['host'];
$user = $config['usr'];
$password = $config['pw'];
try {
    $db = new PDO($dsn, $user, $password);
    $_SESSION['db'] = $db;
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

返回将错误追溯到“@session_start()”,因此我无法用@或使用try-catch来暂停错误。

我希望你能帮助我。 非常感谢

3 个答案:

答案 0 :(得分:1)

您无法在会话中存储资源(PDO对象实际上是资源)。在重新初始化时,这会被破坏,并在PHP文件的范围之外引发异常。

答案 1 :(得分:0)

答案 2 :(得分:0)

因此,正如我所知,在会话中保存PDO对象会调用该错误。我使用了一种解决方法,我现在为每个请求设置da连接,而不是在会话中存储连接。

感谢您的帮助!