Uncaught PDOException: не удалось найти драйвер внутри док-контейнера

Я получаю исключение драйвера при попытке использовать pdo из моего контейнера докера. Мой образ устанавливает php7.1 вместе с включением расширения pdo_mysql. Учетные данные базы данных также верны, но я не уверен, почему я все еще это исключение драйвера: PHP Fatal error: Uncaught PDOException: could not find driver in /var/www/app/test.php:9

Нужно ли включать какие-либо другие расширения?

Dockerfile

FROM ubuntu:xenial

# install dependencies
RUN apt-get update
RUN apt-get install -y software-properties-common python-software-properties
RUN apt-get install -y language-pack-en-base
RUN LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php

# setup php
RUN apt-get update && \
apt-get install -y nginx \
php7.1 \
php7.1-fpm \
php7.1-cli \
php7.1-common \
php7.1-json \
php7.1-opcache \
php7.1-mysql \
php7.1-mbstring \
php7.1-gd \
php7.1-imap \
php7.1-ldap \
php7.1-dev \
php7.1-intl \
php7.1-gd \
php7.1-curl \
php7.1-zip \
php7.1-xml \
curl

RUN phpenmod pdo_mysql

EXPOSE 8000

ENTRYPOINT ["/bin/sh", "./entrypoint.sh"]

докер-compose.yml

version: "3"services:
app:
image: app:latest
command: start
ports:
- 8000:8000
links:
- db
environment:
DB_DATABASE: mydb
DB_HOST: db
DB_USER: app_user
DB_PASSWORD: abc123

db:
image: mysql:5.7
environment:
MYSQL_DATABASE: mydb
MYSQL_USER: app_user
MYSQL_PASSWORD: abc123
MYSQL_ROOT_PASSWORD: abc123
ports:
- 3306:3306

test.php

<?php

require_once('vendor/autoload.php');

use PDO;

$dns = ":host=".getenv('DB_HOST')."; dbname=".getenv('DB_DATABASE');

echo new PDO($dns, getenv('DB_USER'), getenv('DB_PASSWORD'));

1

Решение

Я думаю, что ваша проблема на $ DNS переменная, вы должны определить драйвер БД (mysql в вашем случае).


$dns = "mysql:host=".getenv('DB_HOST')."; dbname=".getenv('DB_DATABASE');

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector