【问题标题】:Mysqli Error 2002: no such file or directory [duplicate]Mysqli错误2002:没有这样的文件或目录[重复]
【发布时间】:2018-05-25 15:24:08
【问题描述】:

我正在尝试将 nginx、php、mysql 与 docker 一起运行。

当我运行 docker-compose 时,一切看起来都很好,但是当我尝试通过索引页面中的 php 代码连接到 mysql 时,我收到了这个错误。

Warning: mysqli::__construct(): (HY000/2002): No such file or directory in /code/index.php on line 8
Connection failed: No such file or directory
  • 我已尝试将 localhost 更改为 127.0.0.1 并在其后加上 :3306。

当更改 localhost --> 127.0.0.1 时,我得到另一个连接失败语句:

Warning: mysqli::__construct(): (HY000/2002): Connection refused in /code/index.php on line 8
Connection failed: Connection refused

php代码:

<?php

$servername = "localhost";
$username = "root";
$password = "toor";

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

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";

echo phpinfo();

?>

当我查看phpinfo(); 时,mysqli.default_socket 没有任何价值。

在启动 docker-compose 后进入 mysql 映像时,我可以进入 mysql shell 并正常执行命令。

感谢任何帮助!

【问题讨论】:

    标签: php mysql ubuntu docker nginx


    【解决方案1】:

    阅读我的回答from this other question。本地主机不会像您认为的那样在容器中解析。

    当您使用 docker-compose.yml 时,您可以通过 docker-compose.yml 中指定的服务名称引用其他服务。您的主机名不是 localhost,而是 web、php 和 mysql。所以在你的php代码中,你应该使用$servername = "mysql";而不是$servername = "localhost";

    【讨论】:

    • 哇,我已经找了 2 天了,谢谢!!
    • 同上!感谢您的解决。
    猜你喜欢
    • 2019-07-27
    • 2014-04-06
    • 2020-05-24
    • 1970-01-01
    • 2018-08-08
    • 2016-10-21
    • 2018-12-22
    • 2017-06-12
    • 2020-11-07
    相关资源
    最近更新 更多