【问题标题】:php: SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused itphp: SQLSTATE[HY000] [2002] 由于目标机器主动拒绝,无法建立连接
【发布时间】:2014-09-01 16:00:19
【问题描述】:

我已经使用 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 端口是 80,443,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); 
?>

【问题讨论】:

  • 有人能帮帮我吗?
  • 通常这个错误意味着有东西阻塞了请求。由于 apache 和 mysql 在同一台机器上运行,防火墙不太可能。您应该检查复制代码中的连接参数:这些函数是否适合 mysql?是“localhost”还是“127.0.0.1”用作主机? (尝试切换主机参数)是否指定了不同的端口?
  • 发布你的配置文件

标签: php mysql apache


【解决方案1】:

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

您应该将端口号更改为默认值:3306!希望这会有所帮助

【讨论】:

    【解决方案2】:

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

    $db = new PDO("mysql:host=".DBHOST.";port=8889
    //------------------------------------------^
    

    这可能会有所帮助:

    $db = new PDO("mysql:host=".DBHOST.";port=3306
    

    【讨论】:

    • 纠正错误后,显示注册页面,完成注册后,我的邮件中没有收到电子邮件确认,在localhost中是不可能的吧?但是我需要每个用户在注册完成后,它应该为相应的用户发送确认邮件,我就是这样做的。你能指导我吗?
    • 其实社区不会调试你的应用业务逻辑。无论如何,这需要另一个新问题
    【解决方案3】:

    萨西, 如果您在本地服务器上运行它,则可能是您为 windows 设置的本地服务器需要配置为发送电子邮件。

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

    对不起,我在这里回答你,但我没有足够的声誉来制作 cmets :D

    【讨论】:

      【解决方案4】:

      当其他一些应用程序(如 Skype 和 IIS)使用 Apache 的端口(即 80)和 mysql 服务器的端口(即 3306)时,通常会发生此错误

      您可以卸载这些应用程序或将 localhost 的端口号更改为其他内容,并在 settings.php 中进行正确更改

      【讨论】:

        【解决方案5】:

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

        show variables;
        

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

        1. 我这样编辑了 php 代码:

        $dsn = 'mysql:host=127.0.0.1;port=3307; dbname=learnphpfast';

        它就像一个魅力!

        【讨论】:

          【解决方案6】:

          对于 Drupal 用户 -

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

          它对我有用。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-04-26
            • 2022-08-05
            • 2019-05-15
            • 2016-03-03
            • 2019-02-01
            • 2018-08-16
            • 2016-04-08
            相关资源
            最近更新 更多