Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 致命错误:在第0行“会话\u开始”的“未知”中,在没有堆栈帧的情况下引发异常_Php_Mysql_Session_Exception_Pdo - Fatal编程技术网

Php 致命错误:在第0行“会话\u开始”的“未知”中,在没有堆栈帧的情况下引发异常

Php 致命错误:在第0行“会话\u开始”的“未知”中,在没有堆栈帧的情况下引发异常,php,mysql,session,exception,pdo,Php,Mysql,Session,Exception,Pdo,另一个更新!2013年2月2日 将PHP更新为5.3版,现在它给了我以下信息 致命错误:在[no active file]:0堆栈跟踪:#0[internal function]:PDO->u sleep()#1{main}在第0行的[no active file]中抛出消息“无法序列化或取消序列化PDO实例”的未捕获异常“PDOException” 但是,我没有使用序列化或取消序列化函数 更新 这是可行的,但这是最不正确、最丑陋的做法。我不想这样做,但我想这可能会有帮助 $db = ne

另一个更新!2013年2月2日 将PHP更新为5.3版,现在它给了我以下信息

致命错误:在[no active file]:0堆栈跟踪:#0[internal function]:PDO->u sleep()#1{main}在第0行的[no active file]中抛出消息“无法序列化或取消序列化PDO实例”的未捕获异常“PDOException”

但是,我没有使用序列化或取消序列化函数

更新

这是可行的,但这是最不正确、最丑陋的做法。我不想这样做,但我想这可能会有帮助

$db    = new PDO("mysql:host=127.0.0.1;dbname=dbname;", "user", "pass");
public function login($user, $pass) {
    global $db;
    //stuff
}
原创帖子

我刚刚将我的项目文件切换到我的web主机(它在本地工作得非常好)

我得到了这个错误,致命错误:在第0行的未知中没有堆栈帧而引发异常

这真是太有用了。我现在只包含一个文件,它是一个带有一个函数的类,计算输入的用户名和密码的ID,然后根据找到的内容返回true或false。(1=正确,除1=错误外的任何内容)

我使用的是PDO(mysql),如果我没有连接到我的数据库,我不会得到错误,但是如果我删除会话_start();从我的文档顶部我也没有得到错误。 私人$db

public function __construct() {
    $this->db = new PDO("mysql:host=127.0.0.1;dbname=dbname;", "user", "pass");
    $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
这就是我设置课程的地方

if(isset($_POST["submit"])) {
    $errors = array();
    if($user->login($_POST["user"], $_POST["pass"]) === false) {
        $errors[] = "Username or password is incorrect";
    }
    if(empty($errors)) {
        $_SESSION["user"] = $_POST["user"];
        header("Location: index.php");
    }
}
我并没有在任何地方抛出异常。我不知道这个错误是什么意思。我正在运行PHP版本5.2.17

这是我的登录功能

public function login($user, $pass) {
    $sql = $this->db->prepare("SELECT COUNT(`id`) FROM `users` WHERE `username` = :user AND `password` = :pass");
    $sql->bindParam(":user", $user);
    $sql->bindParam(":pass", $pass);
    $sql->execute();

    return ($sql->fetchColumn() == 1) ? true : false;
}
索引页(在使用会话启动、索引页和登录页的每个页面上都会发生错误)

我将会话重命名为“username”而不是“user”,然后它开始工作。我为$user调用了我的用户类,所以我想当我试图为会话命名时,出现了严重的错误。这仍然非常奇怪,因为$user是一个变量,“user”是一个字符串>\u>

不管怎么说,问题已经解决了,谢谢你们有时候表现得相当愚蠢

更新

这段时间的罪魁祸首是PHP.ini中的register_globals。它在我的本地服务器上已关闭,但在我的主机上已打开

不过现在到处都关掉了。我想我可能会添加这个,以防将来遇到这个问题。

我将会话重命名为“username”而不是“user”,然后它开始工作。我为$user调用了我的用户类,所以我想当我试图为会话命名时,出现了严重的错误。这仍然非常奇怪,因为$user是一个变量,“user”是一个字符串>\u>

不管怎么说,问题已经解决了,谢谢你们有时候表现得相当愚蠢

更新

这段时间的罪魁祸首是PHP.ini中的register_globals。它在我的本地服务器上已关闭,但在我的主机上已打开


不过现在到处都关掉了。我想我可能会添加此选项,以防将来遇到此问题。

为什么不使用try-catch?并通过getMessage()查看错误?是什么让您认为这会有帮助?代码正在工作,它连接到数据库,它检查输入的用户名和密码是否正确,它设置会话,如果未设置会话,它将重定向。总而言之,它工作得很好,只是它毫无理由地给了我这个错误。你升级了mysql版本吗?我运行的是mysql的5.5.23-55版本。这与会话有关,因为当未设置会话时,我不会得到错误。多些代码会有所帮助。为什么不使用try-catch?并通过getMessage()查看错误?是什么让您认为这会有帮助?代码正在工作,它连接到数据库,它检查输入的用户名和密码是否正确,它设置会话,如果未设置会话,它将重定向。总而言之,它工作得很好,只是它毫无理由地给了我这个错误。你升级了mysql版本吗?我运行的是mysql的5.5.23-55版本。这与会话有关,因为当会话未设置时,我不会出现错误。多些代码会有所帮助。
session_start();
if(!isset($_SESSION["user"])) {
    header("Location: login.php");
}else {
    //begin HTML, no more php after this (except the closing bracket)