Mysqli Ошибка 2002: нет такого файла или каталога

0

Я пытаюсь запустить nginx, php, mysql вместе с docker.

Когда я запускаю docker-compose, все выглядит нормально, но когда я пытаюсь подключиться к mysql через php-код на моей индексной странице, я получаю эту ошибку.

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.

при входе в образ mysql после запуска docker-compose, я могу войти в оболочку mysql и выполнить команды просто отлично.

Любая помощь приветствуется!

Теги:
docker
nginx

1 ответ

0
Лучший ответ

Прочтите мой ответ из этого другого вопроса. Localhost не разрешает, как вы думаете, он должен находиться внутри контейнера.

Когда вы используете docker-compose.yml, вы можете ссылаться на другие службы по их имени службы, как указано в файле docker-compose.yml. Ваши имена хостов не являются localhost, скорее это web, php и mysql. Поэтому в вашем php-коде вам следует использовать $servername = "mysql"; вместо $servername = "localhost";

  • 0
    Вау, я искал 2 дня для этого, спасибо!
  • 0
    То же самое! Спасибо за решение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню