gpt4 book ai didi

php - 使用composer时的pdo_mysql dsn

转载 作者:行者123 更新时间:2023-11-29 07:20:07 26 4
gpt4 key购买 nike

所以我创建了以下 docker-compose.yml 文件

web:
build: ./config/apache
volumes:
- ./code:/var/www/html

db:
build: ./config/db
ports:
- "3310:3310"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: testdatabase
MYSQL_USER: test
MYSQL_PASSWORD: test

当我将index.php添加到我的代码目录中时,我可以看到我的phpinfo(),因此它工作正常。

现在我想尝试使用 PDO 连接到我的数据库

$dsn = 'mysql:host=db;dbname=testdatabase;port=3310';
$username = 'test';
$password = 'test';
$options = [
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
];

try {
$dbh = new PDO($dsn, $username, $password, $options);
} catch (\PDOException $e) {
exit($e->getMessage());
}

这给了我一个

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

我尝试了主机

  • db_1
  • 本地主机

但是没有任何效果,那么连接到 Docker 化数据库的正确解决方案是什么?

我的 config/db/Dockerfile 就像 FROM mysql:latest

一样简单

我的config/apache/Dockerfile是

FROM php:7-apache

RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng12-dev \
mcrypt \
&& docker-php-ext-install -j$(nproc) iconv mcrypt pdo_mysql zip \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd

COPY ./php.ini /usr/local/etc/php/
VOLUME /var/www/html

最佳答案

web:
build: ./config/apache
volumes:
- ./code:/var/www/html
links:
- db

db:
build: ./config/db
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: testdatabase
MYSQL_USER: test
MYSQL_PASSWORD: test

现在我可以使用了

$dsn = 'mysql:host=db;dbname=testdatabase';

其中 host 是链接实例中的名称

关于php - 使用composer时的pdo_mysql dsn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36498938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com