php:SQLSTATE[HY000][2002]无法建立连接,因为目标计算机主动拒绝它

php:SQLSTATE[HY000][2002]无法建立连接,因为目标计算机主动拒绝它,php,mysql,apache,Php,Mysql,Apache,我已经用php创建了注册和登录表单。我从谷歌那里得到了消息来源 因此,我在运行index.php时添加了所有相应的代码 它表明, SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it. 我试图用stackoverflow和google解决这个问题,但仍然无法纠正 我正在使用xampp。在xampp控制面板中,apache和mysql模块正在运行。apac

我已经用php创建了注册和登录表单。我从谷歌那里得到了消息来源

因此,我在运行index.php时添加了所有相应的代码

它表明,

SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.
我试图用stackoverflow和google解决这个问题,但仍然无法纠正

我正在使用xampp。在xampp控制面板中,apache和mysql模块正在运行。apache端口为80443,mysql端口为3306

我可以知道我还有什么错吗

有人能帮我吗?任何帮助都将不胜感激

提前谢谢

这是我的config.php:

<?php
ob_start();
session_start();

//set timezone
date_default_timezone_set('Europe/London');

//database credentials
define('DBHOST','localhost');
define('DBUSER','root');
define('DBPASS','');
define('DBNAME','register');

//application address
define('DIR','http://domain.com/');
define('SITEEMAIL','noreply@domain.com');

try {

    //create PDO connection 
    $db = new PDO("mysql:host=".DBHOST.";port=8889;dbname=".DBNAME, DBUSER, DBPASS);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch(PDOException $e) {
    //show error
    echo '<p class="bg-danger">'.$e->getMessage().'</p>';
    exit;
}

//include the user class, pass in the database connection
include('classes/user.php');
$user = new User($db); 
?>

你不是说你的mysql端口是3306吗:

$db = new PDO("mysql:host=".DBHOST.";port=8889
//------------------------------------------^
这可能有助于:

$db = new PDO("mysql:host=".DBHOST.";port=3306
$db=new-PDO(“mysql:host=“.DBHOST.”;port=3306;dbname=“.dbname,DBUSER,DBPASS”)

您应该将端口号更改为默认值:3306!希望这对Sasi有所帮助, 如果您在本地服务器上运行此操作,则可能是您的windows设置,需要将本地服务器配置为在其上发送电子邮件

您可以找到如何配置XAMPP以从本地主机发送邮件


很抱歉,我在这里回答您,但我没有足够的声誉发表评论:D

此错误通常发生在其他应用程序(如skype和IIS)使用Apache端口(即80)和mysql服务器端口(即3306)时

您可以卸载这些应用程序或将本地主机的端口号更改为其他内容,并在设置中进行正确更改。php

我也遇到了此错误。 我做了以下几件事: 1.找出mysql使用的端口号。在phpmyadmin中,我运行了以下sql:

show variables;
它显示了mysql的变量列表。向下滚动,您将找到端口号

  • 我对php代码进行了如下编辑:
  • $dsn='mysql:host=127.0.0.1;端口=3307;dbname=learnpphpfast'


    它就像一个符咒

    适用于Drupal用户-

    这通常是因为服务器与mysql通信的执行时间最长。将最大执行时间从60秒增加到所需的上限,然后再次尝试刷新页面


    它对我起了作用。

    有人能帮我吗?通常这个错误意味着有东西阻止了请求。由于apache和mysql在同一台机器上运行,防火墙不太可能出现。您应该检查复制的代码中的连接参数:这些函数适合mysql吗?是否将“localhost”或“127.0.0.1”用作主机?(尝试切换主机参数)是否指定了其他端口?发布您的配置文件更正错误后,有显示注册页面,注册完成后,在我的邮件中未收到电子邮件确认,在localhost中不可能对吗?但我需要每一个用户注册完成后,它应该为相应的用户发送确认邮件,这就是我所做的。你能指导我吗?实际上,社区不会调试你的应用程序业务逻辑。无论如何,这需要另一个新问题