我花了几天的时间才试图解决这个问题……
我已经在运行Mojave(10.14.3)的Mac OS上安装了Apache Web服务器(版本2.4.34),并安装了当前版本的MySQL Community Server(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";
?>
我已经尝试了所有我能想到的一切,包括其他两篇类似文章中的建议(该文章:My database user exists, but I still get an (HY000/2002): No such file or directory和该文章:PHP Warning: mysqli::__construct(): (HY000/2002): No such file or directory (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
但所做的一切都会产生一个新错误:
警告:mysqli :: __ construct():服务器请求身份验证 客户端[caching_sha2_password]中未知的方法 第7行的/Users/dave/Sites/hello.php
警告:mysqli :: __ construct():(HY000 / 2054):服务器请求了 客户端未知的身份验证方法 第7行上的/Users/dave/Sites/hello.php连接失败:服务器 客户端未知的请求的身份验证方法
所以我删除了符号链接...并返回到原始错误。
我还尝试用IP地址127.0.0.1以及其他问题线程建议的“ localhost:3306”替换“ localhost”。这里也没有任何作用。
请帮助,我对这种计算机/网页设计的使用还是陌生的,并且没有明显的(谷歌/可理解的)选项。
答案 0 :(得分:2)
使用127.0.0.1代替本地主机。
答案 1 :(得分:0)
我从我所在地区的一些本地技术人员那里得到了一些帮助,事实证明,解决套接字错误是第一步,就像我在上面尝试过的那样。我最终以这种方式使用名词的解决方案做到了这一点:
https://reactjs.org/docs/refs-and-the-dom.html
然后生成第二条错误消息(与我的问题相同,再次在此处):
mysqli :: __ construct():服务器在第7行的/Users/dave/Sites/hello.php中请求客户端[caching_sha2_password]未知的身份验证方法
警告:mysqli :: __ construct():(HY000 / 2054):服务器在第7行的/Users/dave/Sites/hello.php中请求客户端未知的身份验证方法
此问题通过基于SQL的解决方案(2018年6月9日回答)得到解决:
此SQL语句仅在终端中的MySQL中运行。重新启动Apache服务器后,我在Safari中重新加载了.php文件,这导致通过PHP与MySQL的mysqli成功连接。我还尝试了PDO连接,这也有效。