В настоящее время я пытаюсь узнать, как использовать 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 ().
Может ли кто-нибудь предложить какую-либо помощь в этом?
Спасибо
Скотт