php - Docker php mysql 找不到驱动程序
问题描述
我试图在 docker 容器中配置 PHP + MySQL 设置,但出现以下错误:
Fatal error: Uncaught PDOException: could not find driver in /var/www/html/chapter5/connection.php:29 Stack trace: #0 {main} thrown in /var/www/html/chapter5/connection.php on line 29
我docker-compose.yml
的DockerFile
和connection.php
脚本如下:
version: "3"
services:
www:
container_name: playpen_www
build: .
restart: 'always'
ports:
- '81:80'
volumes:
- .:/var/www/html
depends_on:
- db
db:
container_name: playpen_db
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: pdo-demo
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- '3307:3306'
adminer:
image: adminer
container_name: playpen_adminer
restart: always
ports:
- 8080:8080
FROM php:7.4.24-apache
RUN apt-get update -y && apt-get upgrade -y
RUN apt-get install tree nano -y
// $host = '127.0.0.1';
$host = 'playpen_db';
$port = 3307;
$dbname = 'pdo-demo';
$charset = 'utf8mb4';
$dsn = "mysql:host={$host};port={$port};dbname={$dbname};charset={$charset}";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
try {
$pdo = new \PDO($dsn, 'user', 'password', $options);
} catch (PDOException $PDOException) {
print PHP_EOL . "<br><br>" . $PDOException . "<br>";
throw new PDOException($PDOException->getMessage(), (int) $PDOException->getCode());
}
在我执行的playpen_www容器中/usr/local/bin/docker-php-ext-enable pdo_mysql
,我确认pdo和pdo_mysql模块都被列为已启用。
解决方案
非常烦人的是,问题出在数据库名称上。
除了安装pdo_mysql,我在代码和docker-conpose文件中把pdo-demo改成了pdo_demo,重建了容器,脚本连接成功。
推荐阅读
- javascript - 用 mousemove 移动 img
- spring - 请求处理失败;嵌套异常是 org.springframework.dao.EmptyResultDataAccessException
- r - Rselenium 无法创建新服务:ChromeDriverService
- jquery - 每个部分的复选框播放不同的行为
- varchar - 如何在“where 子句”中查询 varchar 和 #1054 未知列“变量”
- python - 使用 python 从文本文件中获取想要的数据而不使用拆分
- asp.net - 从 ASP.NET 传递日期数据类型 MM/dd/yyyy 以在 SQL Server 日期时间数据类型 yyyy-MM-dd hh:mm:ss 中选择 WHERE CLAUSE
- .net - 在 .net c++ 中向列表视图添加搜索功能
- python - Python Ctypes 传递在 .h 文件中定义的结构指针。
- scala - 在另一种方法中使用无形多边形