我从 docker 开始,我想使用 PDO 驱动程序连接到我的数据库。 但不幸的是,我的页面上出现了一个错误,我不知道如何解决它。 你能帮帮我吗?
这是我的错误:
Fatal error: Uncaught PDOException: PDO :: __ construct (): php_network_getaddresses: getaddrinfo failed: No address associated with hostname
这是我的index.php:
<?php
$db = new PDO('mysql:host=db:3306;dbname:DockerProject', "root", "root");
?>
这是我的 dockerfile:
FROM php:7.2-apache
RUN apt-get update && apt-get install -y libpng-dev libjpeg-dev libpq-dev \
&& rm -rf /var/lib/apt/lists/* \
&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
&& docker-php-ext-install gd mbstring pdo pdo_mysql pdo_pgsql
这是我的 docker-compose.yaml:
version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: DockerProject
MYSQL_USER: devuser
MYSQL_PASSWORD: devpass
ports:
- "3306:3306"
web:
image: php_pdo:latest
container_name: php_web
depends_on:
- db
volumes:
- ./php/:/var/www/html/
ports:
- "8100:80"
stdin_open: true
tty: true
myadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8080:80"
links:
- db:db
最佳答案
定义dsn如
$db = new PDO('mysql:host=db;dbname=DockerProject', "root", "root");
如果您需要显式定义端口,请使用:
$db = new PDO('mysql:host=db;port=3306;dbname=DockerProject', "root", "root");
此外,不确定为什么 dbname:DockerProject
的工作原理是正确的语法是 dbname=DockerProject
。
关于php - Docker 使用 PHP 连接 MySQL 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53801674/