【问题标题】:could not find driver error in lumen 5.6 app (running in docker + alpine linux + nginx + php-fpm 7.2)在 lumen 5.6 应用程序中找不到驱动程序错误(在 docker + alpine linux + nginx + php-fpm 7.2 中运行)
【发布时间】:2019-04-30 18:11:05
【问题描述】:

我正在尝试向我的 Lumen 5.6 应用程序添加数据库访问权限,该应用程序当前在以下 LEMP 堆栈中的 docker 中运行:

  • Alpine Linux
  • PHP-FPM 7.2.x
  • NGINX

我的撰写文件如下所示:

version: '2.1'

services:

  webhooks-mysql:
    container_name: webhooks-mysql
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: webhooks
      MYSQL_USER: webhooks
      MYSQL_PASSWORD: 123456
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
      timeout: 20s
      retries: 10
    ports:
    - "33401:3306"

  webhooks-service:
    container_name: webhooks-service
    depends_on:
      webhooks-mysql:
        condition: service_healthy
    build: .
    mem_limit: 64M
    ports:
      - "9050:80"
    volumes:
      - ./:/app:cached

我的.env 中有以下内容:

APP_NAME=webhooks
APP_ENV=local
APP_DEBUG=true
APP_KEY=base64:123456=
APP_TIMEZONE=UTC

DB_CONNECTION=mysql
DB_HOST=webhooks-mysql
DB_DATABASE=webhooks
DB_USERNAME=webhooks
DB_PASSWORD=123456

最后;我的容器具有所有必需的依赖项:

php7 php7-fpm php7-mysqli php7-pdo php7-openssl php7-mbstring
php7-xml php7-tokenizer php7-json php7-openssl php7-curl php7-zlib 
php7-xml php7-phar php7-intl php7-dom php7-xmlreader php7-ctype 
php7-mbstring php7-gd php7-zip git nginx supervisor curl zip unzip

以及以下作曲家包:

  "require": {
    "php": ">=7.1.3",
    "laravel/lumen-framework": "5.6.*",
    "vlucas/phpdotenv": "~2.2",
    "wikimedia/ip-set": "^1.2",
    "doctrine/dbal": "^2.8"
  }

当我尝试在容器中运行迁移时,出现以下错误:

/app # php artisan 迁移

在 Connection.php 第 664 行: 找不到驱动程序 (SQL: select * from information_schema.tables 其中 table_schema = webhooks 和 table_name = )

在 PDOConnection.php 第 50 行: 找不到驱动程序

知道为什么我会收到此错误吗?

我已经验证了 php-mysql / pdo 扩展是否已加载,env 值是否正确等等......我似乎无法弄清楚。

【问题讨论】:

    标签: php docker migration lumen


    【解决方案1】:

    我已使用以下 Dockerfile 解决了这个问题:

    FROM php:7.2-fpm-alpine
    
    # Install packages
    RUN docker-php-ext-configure pdo_mysql && docker-php-ext-install pdo_mysql \
     && apk add --update \
        ca-certificates \
        curl \
        git \
        zip \
        unzip \
        nano \
     && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer \
     && rm -rf /var/cache/apk/*
    
    # Configure php-fpm
    COPY scripts/fpm-pool.conf /etc/php7/php-fpm.d/zzz_custom.conf
    COPY scripts/php.ini /usr/local/etc/php/conf.d/zzz_custom.ini
    
    # Add Application
    WORKDIR /app
    ADD . /app
    

    【讨论】:

    • 这看起来与我在回答中建议的解决方案相同,请问您为什么将其发布为自己的答案而不是接受解决方案?
    • 因为我已经展示了如何为 alpine 正确执行此操作以及使用哪个命令,即docker-php-ext-configure pdo_mysql && docker-php-ext-install pdo_mysql
    【解决方案2】:

    由于 docker 镜像被完全剥离,所以依赖项比你想象的要多,我遇到了同样的问题并通过添加扩展名 pdo_mysql 来修复它,除了你已经拥有的那些(pdo,@987654323 @ 和 mbstring)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      • 2021-05-24
      • 2020-12-14
      相关资源
      最近更新 更多