出现错误 SQLSTATE\[HY000\] \[2002\] NAS Synology 上的连接被拒绝

新手上路,请多包涵

我正在制作一个托管在我的 Synology NAS 上的正在建设中的页面。

访问者可以使用他们的电子邮件订阅,并在网站可用时得到通知。

我在将电子邮件添加到数据库的数据库和 PHP 代码方面遇到问题。

如果服务器名称是 localhost ,我会收到以下错误:

SQLSTATE[HY000] [2002] 没有这样的文件或目录

当它是 127.0.0.1127.0.0.1:3306 时,我收到以下错误:

SQLSTATE[HY000] [2002] 连接被拒绝

我还没有在 Stackoverflow 上找到解决方案。

这里的PHP代码:

 <?php

$servername = "localhost";
$username   = "id";
$password   = "password";
$dbname     = "dbname";

try {
    $conn = new PDO( "mysql:host=$servername;dbname=$dbname", $username, $password );
    $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    $sql = "INSERT INTO email ( email ) VALUES ( '$email' )";

    $conn->exec( $sql );
    echo "New record created successfully";
}

catch( PDOException $e )
{
    echo $sql . "<br>" . $e->getMessage();
}
$conn = null;

为什么我会收到此错误?

原文由 VâneVâne 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 661
1 个回答

我没有找到综合答案,但设法用以前的答案和其他线程解决了我的问题。

作为潜在的备忘录:

  • 群晖 (DSM >=7)
  • 启用 PHP 扩展:web 站 > PHP 参数
  • 在以下位置启用 TCP/IP:Maria DB > 启用
  • 首选 ip 地址:127.0.0.1 到 localhost;

这是一个测试片段,

 <?PHP
  $dsn = "mysql:host=127.0.0.1:3307;dbname=XXX";
  $username = "XXX";
  $password = "XXXXX";

  try {
      $pdo = new PDO($dsn, $username, $password);
  } catch(PDOException $e) {
    die($e);
  }

  $stmt = $pdo->prepare("SELECT * FROM user WHERE XXX = 'XXX'");
  $stmt->execute();
  while($row = $stmt->fetch()) {
    print_r($row);
  }
 ?>

原文由 Flo H 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题