我目前正在为我的网站开发一个小型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来暂停错误。
我希望你能帮助我。 非常感谢
答案 0 :(得分:1)
您无法在会话中存储资源(PDO对象实际上是资源)。在重新初始化时,这会被破坏,并在PHP文件的范围之外引发异常。
答案 1 :(得分:0)
您可能从异常处理程序的析构函数中抛出异常。
资源:
关于同一主题:
答案 2 :(得分:0)
因此,正如我所知,在会话中保存PDO对象会调用该错误。我使用了一种解决方法,我现在为每个请求设置da连接,而不是在会话中存储连接。
感谢您的帮助!