Php Mysql PDO无效凭据导致内部服务器错误而不是捕获错误

Php Mysql PDO无效凭据导致内部服务器错误而不是捕获错误,php,mysql,pdo,internal-server-error,Php,Mysql,Pdo,Internal Server Error,我最困惑的是,我试图用PDO连接我的mysql数据库。我有无效的凭据,而不是我的try and catch捕获错误并告诉我“无效凭据”,它完全冻结了页面,我收到了此错误: 内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求 请与服务器管理员联系,告知错误发生的时间以及可能导致错误的任何操作 有关此错误的详细信息,请参阅服务器错误日志 我的代码如下: function pdo_connect(){ $host = 'localhost'; $user

我最困惑的是,我试图用PDO连接我的mysql数据库。我有无效的凭据,而不是我的try and catch捕获错误并告诉我“无效凭据”,它完全冻结了页面,我收到了此错误:

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求

请与服务器管理员联系,告知错误发生的时间以及可能导致错误的任何操作

有关此错误的详细信息,请参阅服务器错误日志

我的代码如下:

function pdo_connect(){
    $host           = 'localhost';
    $user           = 'user';
    $pass           = 'wrongpass';
    $dbSchema       = 'wrongschema';
    try{
        $dbcPDO = new PDO('mysql:host='.$host.';dbname='.$dbSchema, $user, $pass); //connect to the PDO instance
        $dbcPDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //turn on errors
        return $dbcPDO;
    }catch(PDOException $e) {
        trigger_error('Could not connect to the database: ' . $e->getMessage());
        return false;
        exit();
    }
}

当我有正确的凭据时,我连接没有问题。我假设无效凭据将被PDO异常捕获,并显示声明其连接失败的消息。

仅供参考,当我们对数据库使用无效凭据时,PDO将捕获异常。不知道是什么让你出了问题

  • 您在函数中编写了连接到数据库的PDO。确保在PHP脚本中调用该函数

  • 您可以使用下面的代码来检查到数据库的PDO连接是否成功

    if($con==null)
    {
     $response["connected"] = "false";
    }else{
     $response["connected"] = "true";
    }
    echo json_encode($response);     // $con is the connection object returned.
    
  • 上面使用的代码在我的服务器上运行良好。问题可能与服务器本身有关。请尝试检查错误日志以了解更多详细信息

  • 将引导您了解有关内部服务器错误的信息。可能您可以发布错误日志以快速解决问题


    祝你好运

    仅供参考,当我们对数据库使用无效凭据时,PDO将捕获异常。不知道是什么让你出了问题

  • 您在函数中编写了连接到数据库的PDO。确保在PHP脚本中调用该函数

  • 您可以使用下面的代码来检查到数据库的PDO连接是否成功

    if($con==null)
    {
     $response["connected"] = "false";
    }else{
     $response["connected"] = "true";
    }
    echo json_encode($response);     // $con is the connection object returned.
    
  • 上面使用的代码在我的服务器上运行良好。问题可能与服务器本身有关。请尝试检查错误日志以了解更多详细信息

  • 将引导您了解有关内部服务器错误的信息。可能您可以发布错误日志以快速解决问题


    祝你好运

    您的服务器可能被配置为只在通知上抛出500个状态:-在创建连接时尝试设置error属性
    new PDO('mysql:host='.$host';dbname='.$dbSchema,$user,$pass,array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION))我认为这与PDO无关,我认为这是因为我关闭了错误。我知道我关闭了错误,但我没有得到的部分是我试图通过php打开它们。而且还挺管用的。当函数名不存在时,它告诉我,但我认为并不是所有的错误都有效。你的错误日志有什么说明?@meda PDO构造函数总是在连接错误时抛出异常。你的代码不应该有任何区别。正如OP在后续评论中所解释的,这个问题可能会通过一个简单的
    trigger_error('Foo!')重现行。您的服务器可能被配置为只在通知上抛出500个状态:-?在创建连接时尝试设置错误属性
    new PDO('mysql:host='.$host';dbname='.$dbSchema,$user,$pass,array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION))我认为这与PDO无关,我认为这是因为我关闭了错误。我知道我关闭了错误,但我没有得到的部分是我试图通过php打开它们。而且还挺管用的。当函数名不存在时,它告诉我,但我认为并不是所有的错误都有效。你的错误日志有什么说明?@meda PDO构造函数总是在连接错误时抛出异常。你的代码不应该有任何区别。正如OP在后续评论中所解释的,这个问题可能会通过一个简单的
    trigger_error('Foo!')重现行。