无法在 Docker 中运行的 PHP8 容器中启用具有 JPEG 支持的 GD

Aid*_*das 9 php gd docker php-8

尝试了很多方法,但仍然无法在 Docker 中运行的 PHP8 容器中启用 GD 和 JPEG 支持。这是我的 Docker 文件的片段:

FROM php:8.0.10-apache

RUN apt-get -y update && apt-get -y install \
apt-utils \
vim \
rsync \
curl \
openssl \
openssh-server \
mariadb-client \
git \
zlib1g-dev \
libicu-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libzip-dev \
libpng-dev \
g++ \
zip \
unzip \
gnupg \
gnupg2 \
unixodbc-dev

RUN docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg
RUN docker-php-ext-install gd 
Run Code Online (Sandbox Code Playgroud)

缺少 JPEG 支持

如您所见,缺少 JPEG 支持。我在这里缺少什么?谢谢!

小智 5

我正在使用 Nginx(不是像你一样的 Apache),但在 GD 中遇到了类似的问题。我使用以下几行让GD 与 jpg、png 和 webp 一起运行:

FROM php:8.0-fpm-alpine

# Install dependencies for GD and install GD with support for jpeg, png webp and freetype
# Info about installing GD in PHP https://www.php.net/manual/en/image.installation.php
RUN apk add --no-cache \
        libjpeg-turbo-dev \
        libpng-dev \
        libwebp-dev \
        freetype-dev

# As of PHP 7.4 we don't need to add --with-png
RUN docker-php-ext-configure gd --with-jpeg --with-webp --with-freetype
RUN docker-php-ext-install gd
Run Code Online (Sandbox Code Playgroud)

查看您的RUN apt-get声明,我注意到您正在使用另一个 libjpeg 库libjpeg62-turbo-dev \。您能检查一下版本是否正确吗?和/或尝试将名称更改为libjpeg-turbo-dev \(名称中不含 62 )。