如何解决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):在第111行的> /volume1/web/listino.php中拒绝连接警告:mysqli :: select_db():无法在/中获取mysqli第114行上的volume1 / web / listino.php错误nella selezione del DB。
解决方法
请尝试
$db_host = '127.0.0.1';
$db_user = 'root';
$db_pass = '';
$db_database = 'database_name';
$db_port = '3306';
$connection = mysqli_connect($db_host,$db_user,$db_pass,$db_database,$db_port);
,
我在图形控制台Synology Nas中进行了修改:
-
打开(PHP核心设置端口3307代替3306)。
-
在PHP代码端口3307中的值。
-
在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();
连接到Synology NAS上的MariaDB时,需要提供所有六个参数。第六个参数是您应该使用的套接字名称。
用于mysqli连接的正确代码是这样的:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
// Please do not connect as root!
$mysqli = new mysqli('localhost','root','password','miodb',3307,'/run/mysqld/mysqld10.sock');
$mysqli->set_charset('utf8mb4'); // always set the charset
如果您只是开始PHP开发,那么我建议您学习PDO而不是mysqli。使用PDO,您可以通过以下方式进行连接:
$pdo = new PDO("mysql:host=localhost;dbname=miodb;charset=utf8mb4;unix_socket=/run/mysqld/mysqld10.sock",[
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,\PDO::ATTR_EMULATE_PREPARES => false
]);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。