【发布时间】:2019-07-27 11:09:00
【问题描述】:
我花了几天时间试图弄清楚这一点……
我在运行 Mojave (10.14.3) 的 Mac OS 上设置了 Apache Web 服务器(版本 2.4.34),并安装了当前版本的 MySQL Community Server (8.0.15)。两者都运行完美,我可以确定(从命令行)。我安装了 PHP 7.1.23。当我使用以下代码创建一个 .php 文件并将其放在我的站点目录中,然后在 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 的相关表中,socket 的值为/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] 中未知的方法 /Users/dave/Sites/hello.php 在第 7 行
警告:mysqli::__construct(): (HY000/2054): 服务器请求 客户端未知的身份验证方法 第 7 行的 /Users/dave/Sites/hello.php 连接失败:服务器 客户端未知的请求身份验证方法
所以我删除了符号链接...并返回到原来的错误。
我还尝试将“localhost”替换为 IP 地址 127.0.0.1 以及“localhost:3306”,正如其他问题线程所建议的那样。这里也没有任何效果。
请帮忙,我对这种计算机/网页设计的使用不熟悉,而且我没有明显的(谷歌可搜索/可理解的)选项。
【问题讨论】:
-
您没有描述您在安装过程中采取的步骤。说“我已经安装了 Apache 和 Mysql”是一回事。但是有多种安装和配置方法,所以你需要描述你的精确步骤,这样我们才能看到你哪里出错了。另外你为什么要安装它们?为什么不直接使用 MAMP?您是否也搜索过 StackOverflow / Google 以查找该错误?例如。 stackoverflow.com/questions/13769504/…。您提到“另外两个类似的帖子”,但您没有链接到它们。如果你这样做会有所帮助。
-
您如何验证 MySQL 确实在运行并接受连接?它接受套接字连接吗?您是在 docker 容器内运行东西还是在同一主机上运行所有东西?
-
@geoidesic:我会尽量准确回答。 Apache:实际上,我认为升级到 Mojave 时已经安装了 Apache 和 php。然后,我根据discussions.apple.com/docs/DOC-13841和dyclassroom.com/howto-mac/…设置了Apache。 mysql。我下载了 .dmg 压缩文件夹并按照 MySQL 用户手册说明进行安装。我检查了服务器是否在 Mac 首选项中运行,然后可以从命令行使用 mysql,按照教程进行操作没问题。我也可以 LOAD DATA LOCAL INFILE OK。
-
@ArSeN。我不明白你的问题抱歉,这里是新手。
-
在你的 php 文件中创建一个
phpinfo()并显示 MySQL 和 MySQLi 块的内容。