Php Docker:SQLSTATE[HY000][2002]没有这样的文件或目录

Php Docker:SQLSTATE[HY000][2002]没有这样的文件或目录,php,mysql,docker,yii2,mariadb,Php,Mysql,Docker,Yii2,Mariadb,嘿,伙计们,我正在尝试连接Yii2和mysql上运行的mariadb 我用的是docker我有这些容器 mariadb和php-fpm我可以使用这个命令mysql-u root-p在mariadb容器内连接到mysql,没有问题。 同样使用mysql工作台我也可以通过隧道连接到mysql,也没有问题 但是当我运行这个站点时,例如mysite.com/user/login,当我登录时,我得到了这个错误 SQLSTATE[HY000][2002]没有这样的文件或目录 原因:PDO异常 这是docke

嘿,伙计们,我正在尝试连接
Yii2
mysql
上运行的
mariadb

我用的是docker我有这些容器

mariadb
php-fpm
我可以使用这个命令
mysql-u root-p
mariadb
容器内连接到mysql,没有问题。 同样使用
mysql工作台
我也可以通过隧道连接到mysql,也没有问题

但是当我运行这个站点时,例如mysite.com/user/login,当我登录时,我得到了这个错误

SQLSTATE[HY000][2002]没有这样的文件或目录
原因:PDO异常

这是docker compose文件中的我的
mariadb
config

mariadb:
    image: bitnami/mariadb:latest
    container_name: mariadb
    working_dir: /bitnami/mariadb
    volumes:
        - ./data/mariadb:/bitnami/mariadb
    environment:
        - MARIADB_ROOT_PASSWORD=rootpass
        - MARIADB_DATABASE=mydb
        - MARIADB_USER=david
        - MARIADB_PASSWORD=pass
    ports:
        - "8890:3306"
在我的
main.php
config中
Yii2
我把它作为我的
dsn

mysql:host=ipvalueofmysite.com;端口=8890;dbname=mydb

在我的例子中,我找到了解决方案


基本上,在docker中,
db
服务名称成为数据库的主机名,我需要将
localhost
交换到
db
,错误就消失了。奇怪,我知道。:)

你试过使用localhost吗?没有,因为我认为它不起作用,因为我是在不在本地的服务器上这样做的。所以你从本地环境连接远程mysql?或者你的代码和mysql都是远程工作的?是的,所有东西都是远程的,那么你可以使用localhost,因为它们在同一台服务器上