警告: mysqli::__construct(): (HY000/2002): 中没有这样的文件或目录

DJC*_*DJC 1 php mysql mysqli

我花了几天时间试图解决这个问题,我完全被困住了......

我已在运行 Mojave (10.14.3) 的 Mac 操作系统上设置了 Apache Web 服务器(版本 2.4.34),并安装了当前版本的 MySQL 社区服务器 (8.0.15)。正如我所确定的(从命令行),两者都运行完美。我安装了 PHP 7.1.23。当我使用以下代码创建 .php 文件并将其放入我的 Sites 目录中,然后在 Safari 中转到http://localhost/~dave/hello.php时,我收到此错误:

“警告:mysqli::__construct():(HY000/2002):第 7 行 /Users/dave/Sites/hello.php 中没有这样的文件或目录连接失败:没有这样的文件或目录”。

hello.php 中的代码:

<?php
$servername = "localhost";
$username = "dave";
$password = "*****";

//Create connection
$conn = new mysqli($servername, $username, $password);

//Check connection
if ($conn->connect_error) {
   die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
Run Code Online (Sandbox Code Playgroud)

我已经尝试了我能想到的一切,包括其他两篇类似帖子中的建议(这一篇:我的数据库用户存在,但我仍然得到一个(HY000/2002):没有这样的文件或目录,这一篇:PHP警告: mysqli::__construct(): (HY000/2002): 没有这样的文件或目录 (Debian GNU/Linux 9) ),并且我无法使用 php 连接到 MySQl。特别是,我检查了 php 信息页面,mysqli 的套接字给出为var/mysql/mysql.sock。在 mysql 的相关表中,套接字的值给出为/tmp/mysql.sock。我尝试通过添加每个套接字(代替空值)来更改 php.ini.default 文件,但都不起作用(仍然生成相同的错误)。我认为 2002 MySQL 套接字错误可能是问题所在,所以我通过这样做创建了一个符号链接:

sudo mkdir /var/mysql
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud)

但所做的只是生成一个新错误:

警告:mysqli::__construct():服务器请求客户端未知的身份验证方法 [caching_sha2_password] 在 /Users/dave/Sites/hello.php 第 7 行

警告: mysqli::__construct(): (HY000/2054):服务器请求的身份验证方法对客户端未知,位于 /Users/dave/Sites/hello.php 第 7 行连接失败:服务器请求的身份验证方法对客户端未知

所以我删除了符号链接...并返回到原始错误。

我还尝试将“localhost”替换为 IP 地址 127.0.0.1 以及“localhost:3306”,正如其他问题线程所建议的那样。这里也没有任何作用。

请帮忙,我对这种计算机/网页设计的使用很陌生,而且我没有明显的(可谷歌/可理解的)选项。

小智 6

使用 127.0.0.1 而不是 localhost。


归档时间:

查看次数:

11785 次

最近记录:

5 年,8 月 前