У меня есть Dockerfile:Докер - Установите PDO драйвер для PHP + Nginx
FROM php:7-fpm
RUN apt-get update \
&& apt-get install -y --no-install-recommends libpq-dev \
&& docker-php-ext-install mysqli pdo_pgsql pdo_mysql
Тогда у меня в Докер-compose.yml файл:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./frontend:/var/www/html
- ./api:/var/www/html/api
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
links:
- php
mysql:
image: mariadb
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=example
volumes:
- ./database:/var/lib/mysql
php:
image: php:7-fpm
volumes:
- ./frontend:/var/www/html
- ./api:/var/www/html/api
links:
- mysql
Тогда в моем PHP код, который я :
<?php
$servername = "localhost";
$username = "root";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=example", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
?>
Который, когда я иду подключиться к базе данных я получаю:
Ошибка подключения: не удалось найти драйвер
Как загрузить драйвер PDO, используя эту установку Докер?
Действительно ли он пытается подключиться к локальному хосту через код? Если это так, я не вижу никаких контейнеров, прикрепленных к сети хоста. Просто хотел прояснить, прежде чем я угадал догадки. Является ли код, который должен выполняться в PHP FPM? – Dockstar
У меня есть php, связанный с веб-изображением. Прямо сейчас я могу перейти на локальный хост, и он отлично работает с php-страницами, но попытка использовать PDO для подключения к моей базе данных не будет работать из-за недостающего драйвера. – ClickThisNick