【问题标题】:"Could Not Find " and "SQLSTATE[HY000] [2002]" Errors“找不到”和“SQLSTATE[HY000] [2002]”错误
【发布时间】:2019-12-28 19:08:21
【问题描述】:

我在 Windows 中开发了一个项目。我使用过 PHP、MySQL(使用 PDO)和 Apache。

我用代码创建了数据库和表。没有问题。

我正在尝试在我的 Ubuntu 18.04 机器上 dockerize 这个项目。相信我,我从早上就开始尝试这个了。

该项目在本地主机上使用 CSS、JavaScript 顺利运行。但是添加到数据库时会出错。我收到的错误代码是:找不到驱动程序。 php.ini file is missing

I also don't have my apache2 folder that should be in etc/php/7.2.

我得到 SQLSTATE[HY000] [2002] 无法分配请求的地址错误我以这种方式建立连接:

$db = new PDO("mysql:host=$this->servername;charset=utf8", $this->username, $this->password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

我收到找不到驱动程序错误我以这种方式建立连接(使用 pdo_mysql):

$db = new PDO("pdo_mysql:host=$this->servername;charset=utf8", $this->username, $this->password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

我已经在 Dockerfile 中安装了 apache2 和 php。

这是我的树命令结果:

.
├── docker-compose.yml
├── Dockerfile
└── src
    ├── css
    │   ├── css
    │   │   └── dashboard.css
    │   ├── fonts
    │   │   └── feather
    │   │       ├── feather-webfont6cfa.eot
    │   │       ├── feather-webfont6cfa.svg
    │   │       ├── feather-webfont6cfa.ttf
    │   │       └── feather-webfont6cfa.woff
    │   └── style.css
    ├── docker-compose.yml
    ├── js
    │   ├── guncelle.js
    │   └── resimler.js
    └── php
        ├── about.php
        ├── categories.php
        ├── create_database.php
        ├── footer.php
        ├── header.php
        ├── index.php
        ├── info.php
        ├── login.php
        └── logout.php

有 docker-compose.yml 和 Dockerfile 文件:

# DOCKERFILE
FROM php:7.3-apache
RUN apt-get update
RUN apt-get install -y git
RUN docker-php-ext-install pdo pdo_mysql mysqli
RUN a2enmod rewrite
#Install Composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php composer-setup.php --install-dir=. --filename=composer
RUN mv composer /usr/local/bin/
COPY src/ /var/www/html/
EXPOSE 80
# DOCKER-COMPOSE.YML
version: '3'
services:
  mysql:
        image: mysql:8.0
        container_name: vt_album
        command: --default-authentication-plugin=mysql_native_password
        volumes:
          - .:/application
        restart: always
        environment:
          - MYSQL_ROOT_PASSWORD=2222
          - MYSQL_PASSWORD=2222
        ports:
          - "3306:3306"
  website:
    container_name: php_album
    build:
      context: ./
    volumes:
      - ./src/:/var/www/html
    ports:
      - 8080:8080
    depends_on:
      - mysql

【问题讨论】:

    标签: php pdo docker-compose apache2 ubuntu-18.04


    【解决方案1】:

    似乎“此图像附带默认的 php.ini-development 和 php.ini-production 配置文件。”你应该选择一个

    # Use the default production configuration
    RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
    

    【讨论】:

    • 感谢您的回复,但我仍然收到同样的错误:(
    【解决方案2】:

    我找到了解决方案。 dockerfile 和 docker-compose.yml 文件与问题中的相同。没有变化。但是在连接数据库时,应该写“mysql:host = mysql”而不是“mysql:host = localhost”。这里的第二个“mysql”代表我们在docker-compose.yml文件中定义的服务名。

    以下代码首先创建数据库。然后,它创建连接对象。然后调用相关方法创建表。

        protected $conn;
        protected $username = "root";
        protected $password = 2222;
        protected $dbname = "db_2";
    
        function _construct(){
            $db = new PDO("mysql:host=mysql;charset=utf8; port:3306", $this->username, $this->password);
            $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
            $database = "CREATE DATABASE IF NOT EXISTS ".$this->dbname.";ALTER DATABASE ".$this->dbname." CHARACTER SET utf8 COLLATE utf8_turkish_ci;";
    
            $db->exec($database);
    
            $this->conn=new PDO("mysql:host=mysql;charset=utf8;port:3306", $this->username, $this->password);
            $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
            $this->create_table_categories();
            $this->create_table_users();
            $this->create_table_files();
    
            return "<br>success<br>";
        }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      • 1970-01-01
      • 2013-11-05
      • 1970-01-01
      • 2021-12-20
      • 2013-11-06
      • 1970-01-01
      相关资源
      最近更新 更多