Неустранимая ошибка: неперехваченное исключение PDOexception с использованием Docker для стека LAMP - PullRequest
0 голосов
/ 01 марта 2019

В настоящее время я пытаюсь узнать, как использовать docker-compose для создания стека LAMP с помощью apache, php и mariadb, и столкнулся с этой ошибкой при попытке установить связь с моей базой данных через PHP.

Ошибка

Неустранимая ошибка: Uncaught PDOException: не удалось найти драйвер в /var/www/html/index.php:5 ​​Трассировка стека: # 0 /var/www/html/index.php(5):PDO -> __ construct ('mysql: host = data ...', 'admin', 'password') # 1 {main} в /var/www/html/index.php в строке 5 "

Похоже, ошибка связана с моим использованием PDO. Неправильно ли задано имя хоста?

Файл PHP:

<?php

   $value = "World";

    $db = new PDO('mysql:host=database;dbname=db;charset=utf8mb4', 'admin', 
  'password');

$databaseTest = ($db->query('SELECT * FROM test'))- 

fetchAll (PDO :: FETCH_OBJ);

?>

<html>
    <body>
        <h1>Hello, <?= $value ?>!</h1>

        <?php foreach($databaseTest as $row): ?>
        <p>Hello, <?= $row->name ?></p>
        <?php endforeach; ?>
    </body>
</html>

Docker-Compose.yml

version: '3'
services:
    php-apache:
        image: php:7.2.1-apache
        ports:
            - 80:80
        volumes:
            - ./DocumentRoot:/var/www/html:z
        links:
            - 'mariadb'

    mariadb:
        image: mariadb:10.1
        volumes:
            - mariadb:/var/lib/mysql
            - ./db/data.sql:/docker-entrypoint-initdb.d/data.sql
        environment:
            TZ: "Europe/London"
            MYSQL_ALLOW_EMPTY_PASSWORD: "no"
            MYSQL_ROOT_PASSWORD: "password"
            MYSQL_USER: 'admin'
            MYSQL_PASSWORD: 'password'
            MYSQL_DATABASE: 'db'

volumes:
    mariadb:
    db:

Файл данных:

DROP TABLE IF EXISTS `test`;

CREATE TABLE `test` (
  `name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

LOCK TABLES `test` WRITE;

INSERT INTO `test` VALUES ('George'),('Sam'),('Kathy');

UNLOCK TABLES;

Веб-сервер работает, если я проверяю с помощью phpinfo ().

Может ли кто-нибудь предложить какую-либо помощь в этом?

Спасибо

Скотт

...