Mysqli Error 2002:没有这样的文件或目录

时间:2017-12-12 01:51:35

标签: php mysql ubuntu docker nginx

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

当我运行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并执行命令就好了。

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

阅读我的回答from this other question。 Localhost并不像你认为它应该在容器内解决。

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