首页 > 解决方案 > Mysqli_connect(): (HY000/2002): 在 SYNOLOGY NAS 上建立网站时连接被拒绝

问题描述

我将一个小型服务站点从 AlterVista 门户转移到我的 NAS Synology,运行良好的相同代码现在不再在我的 NAS 上运行。从连接错误到 MariaDB。我已经阅读了有关此问题的论坛,但这是另一个系统(不是 pc,而是具有自己的应用程序的 nas)。我正在使用端口 3307,因为 mariadb10 正在侦听该端口。(当 mariadb 5 监听 3306 端口时也可以查看)

在 NAS 上,我已经安装了 MariaDB、PHP、PHP admin(可以很好地连接到 mariadb)、Apache HTTP Server 2.2,以及所有需要安装 PHP 5,7 的驱动程序和选项(mysqli、pdo 驱动程序和其他选项) )。

<?php
error_reporting(E_ALL);

$USERNAME = "root";
$PASSWORD = "xxxxxxx";  //null  
$DBSERVER = "127.0.0.1:3307";   //127.0.0.1:3306  mariadb5
$DBNAME = "miodb";

if(!($db_connection = new mysqli($DBSERVER, $USERNAME, $PASSWORD, $DBNAME)))
   die('Connect Error (' . $db_connection->connect_errno . ') '. $db_connection->connect_error);

if(!($db_selection = $db_connection->select_db($DBNAME)))
   die ("Errore nella selezione del DB.");

$query = $db_connection->query("SELECT * FROM MATERIALE");
while($cicle=$query->fetch_array(MYSQLI_ASSOC)){
    $url=$cicle['FOTO'];
    echo "<tr>
              <td>".$cicle['CODICEARTICOLO']."</td>
              <td><img src='".$url."' width='50' height='50' /> </td>
              <td>".$cicle['DESCRIZIONE']."</td>
              <td>".$cicle['PREZZO']." Euro</td>
          </tr>";
}
$query->close();
$db_connection->close();
?>

警告:mysqli::__construct(): (HY000/2002): Connection denied in >/volume1/web/listino.php on line 111 警告: mysqli::select_db(): Couldn't fetch mysqli >in /volume1/web /listino.php 第 114 行 Errore nella selezione del DB。

标签: phpmysqlimariadbsynology

解决方案


我在图形控制台 Synology Nas 中进行了修改:

  1. on(PHP 核心设置端口 3307 而不是 3306)。

  2. 在 PHP 代码端口 3307 值。

  3. 在 3307 上的 TCP/IP 端口设置上启用 maria db10 标志(默认)

     <?php
    
     error_reporting(E_ALL);
    
     $USERNAME = "root";
     $PASSWORD = "password"; //null X
     $DBSERVER = "127.0.0.1";    //127.0.0.1:3306
     $DBNAME = "miodb";
     $DB_PORT = '3307';
     $SOCKET = "/run/mysqld/mysqld10.sock";   //not necessary
    
     $db_connection = new mysqli($DBSERVER, $USERNAME, $PASSWORD, $DBNAME, $DB_PORT);
    
     $query = $db_connection->query("SELECT * FROM MATERIALE");
     while ($cicle = $query->fetch_array(MYSQLI_ASSOC)) {
         $url = $cicle['FOTO'];
         echo "<tr>
                 <td>" . $cicle['CODICEARTICOLO'] . "</td>
                 <td><img src='" . $url . "' width='50' height='50' /> </td>
                 <td>" . $cicle['DESCRIZIONE'] . "</td>
                 <td>" . $cicle['PREZZO'] . " Euro</td>
             </tr>";
     }
     $query->close();
     $db_connection->close();
    

推荐阅读