【问题标题】:Docker - Unable to load dynamic library 'gd2'Docker - 无法加载动态库“gd2”
【发布时间】:2020-03-07 08:17:59
【问题描述】:

我不明白如何在 linux mint 上使用 Docker 安装 gd2 库。 这是我的 docker-compose 文件

version: '3'

services:

  web:
    build: ./web
    environment:
      - APACHE_RUN_USER=#1000
    volumes:
      - ${APP_PATH_HOST}:${APP_PATH_CONTAINER}
      - ./web/php.ini:/usr/local/etc/php/php.ini
    ports:
      - 8080:80
    working_dir: ${APP_PATH_CONTAINER}

  db:
    image: mariadb
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_USER: root
      MYSQL_ROOT_PASSWORD: 12345
      MYSQL_DATABASE: books
      MYSQL_USER: root
      MYSQL_PASSWORD: 12345
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    volumes:
      - ${DB_PATH_HOST}:/var/lib/mysql

  adminer:
    image: adminer
    restart: always
    ports:
      - 6080:8080

  composer:
    image: composer:1.6
    volumes:
      - ${APP_PATH_HOST}:${APP_PATH_CONTAINER}
    working_dir: ${APP_PATH_CONTAINER}
    command: composer install

在我执行docker-compose up --build 之后,我在构建过程中没有任何错误,但是当我执行docker exec -it books_web_1 bash 并检查php 版本php -v 时,我得到了这个错误

PHP Warning:  PHP Startup: Unable to load dynamic library 'gd2' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20190902/gd2 (/usr/local/lib/php/extensions/no-debug-non-zts-20190902/gd2: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20190902/gd2.so (/usr/local/lib/php/extensions/no-debug-non-zts-20190902/gd2.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

'web' 容器的 Dockerfile

FROM php:7.4-apache

RUN apt-get update && apt-get install -y --no-install-recommends apt-utils \
    libmcrypt-dev \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libpng-dev \
    libpq-dev \
    zlib1g-dev \
    && docker-php-ext-install -j$(nproc) iconv \
    && docker-php-ext-configure gd \
    && docker-php-ext-install -j$(nproc) gd \
    && docker-php-ext-install \
           pdo \
           pdo_mysql \
           pgsql \
           bcmath \
           gd \
           && a2enmod \
           rewrite

RUN rm -rf /var/lib/apt/lists/*

那么安装 gd2 还需要什么?

【问题讨论】:

    标签: php docker gd2


    【解决方案1】:

    对我来说,解决方法是通过将 extension=gd2 更改为 extension=gd 来编辑 php.ini 文件

    我像提问者一样使用php:7.4-apache

    【讨论】:

    • 这绝对解决了 40 分钟令人沮丧的谷歌搜索和反复试验!
    • 不,“构建”:PHP 警告:PHP 启动:无法加载动态库 'gd'
    【解决方案2】:

    我无法使用您的 Dockerfile 重现您的问题,但是我在尝试在 Ubuntu 而不是在 Debian 上构建我的 PHP 映像但使用 https://github.com/docker-library/drupal/blob/4e4d23ee86e88a0e6e88ec28837402ad1c8453fa/9.0/fpm-buster/Dockerfile 作为添加额外 PHP 扩展的示例时遇到了类似的问题。

    在我的图片中,当我尝试检查加载的模块 (php -m) 时,我得到了:

    PHP 警告:PHP 启动:无法加载动态库“gd.so”(已尝试:/usr/local/lib/php/extensions/no-debug-non-zts-20190902/gd.so (libpng16.so .16:无法打开共享对象文件:没有这样的文件或目录),/usr/local/lib/php/extensions/no-debug-non-zts-20190902/gd.so.so(/usr/local/lib/ php/extensions/no-debug-non-zts-20190902/gd.so.so:无法打开共享对象文件:没有这样的文件或目录))在第 0 行的未知 PHP 警告:PHP 启动:无法加载动态库“zip.so”(已尝试:/usr/local/lib/php/extensions/no-debug-non-zts-20190902/zip.so(libzip.so.5:无法打开共享对象文件:没有这样的文件或目录),/usr/local/lib/php/extensions/no-debug-non-zts-20190902/zip.so.so(/usr/local/lib/php/extensions /no-debug-non-zts-20190902/zip.so.so: 无法打开共享对象文件: 没有这样的文件或目录)) 在第 0 行的未知中

    在那个文件line 41 你会看到:

    | xargs -r dpkg-query -S \

    我替换为

    | xargs -r 真实路径 | xargs -r dpkg-query --search \

    现在模块正在正确加载。

    我不是共享库和链接方面的专家,但它正在修复库的路径,因此没有更多问题。

    【讨论】:

      【解决方案3】:

      这个问题也可能是由...引起的

      • php.ini 中的 extension_dir 条目无效,
      • 冲突的php.ini 文件
      • 或无效的扩展名。

      【讨论】:

        猜你喜欢
        • 2021-08-01
        • 2023-03-19
        • 1970-01-01
        • 2012-01-26
        • 2019-04-03
        • 2016-08-25
        • 2017-03-03
        • 2017-07-29
        • 2019-01-03
        相关资源
        最近更新 更多