这是我的 docker 文件:
FROM php:8.0-fpm-buster
# Arguments defined in docker-compose.yml
ARG user
ARG uid
# Install system dependencies
RUN apt-get update && apt-get install -y \
build-essential \
git \
curl \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
jpegoptim optipng pngquant gifsicle \
libonig-dev \
libxml2-dev \
zip \
sudo \
unzip \
npm \
nodejs \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
但我有一个错误
调用未定义函数 Intervention\Image\Gd\imagecreatefromjpeg()
当我尝试上传 jpg 图像时。即使我将其更改为:
docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-gd --with-freetype --with-jpeg \
但是我在构建时出现以下错误,并且在 Laravel 中出现上述错误
配置:错误:无法识别的选项:--with-freetype-dir, --with-jpeg-dir, --with-gd ------ 无法解决:rpc 错误:代码 = 未知 desc = 执行程序运行失败 [/bin/sh -c apt-get update && apt-get install -y
构建必备 git curl libpng-dev libjpeg-dev
libfreetype6-dev libjpeg62-turbo-dev jpegoptim optipng pngquant gifsicle libonig-dev libxml2-dev zip sudo
解压 npm nodejs && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-gd --with-freetype --with-jpeg && docker-php-ext-install - j$(nproc) gd]:退出代码:1
我该如何解决这个问题?
我通过启用 GD 库来修复它, 这是我的 Dockerfile 配置:
FROM php:8.0-fpm-buster
# Arguments defined in docker-compose.yml
ARG user
ARG uid
# Install system dependencies
RUN apt-get update && apt-get install -y \
build-essential \
git \
curl \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libgd-dev \
jpegoptim optipng pngquant gifsicle \
libonig-dev \
libxml2-dev \
zip \
sudo \
unzip \
npm \
nodejs
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install PHP extensions
RUN docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
即使在尝试接受的答案后,我仍然遇到相同的错误。对我来说解决这个错误的方法是将驱动程序从 GD 更改为 Imagick,我在这个答案中找到了如何做。
将以下内容添加到 Dockerfile:
RUN apt-get install -y libmagickwand-dev
RUN pecl install imagick
RUN docker-php-ext-enable imagick
在调用 Intervention/Image 包中的函数(
Image::make
等)之前,将此行添加到 PHP 代码中。
Image::configure(['driver' => 'imagick']);
在 php5.6(laravel5) 项目中遇到类似的问题。 修改了罗伯特对我的安装的回答。 Dockerfile:
RUN apt-get install -y libmagickwand-dev
RUN pecl install imagick
RUN docker-php-ext-enable imagick
如果config/image.php不存在,
php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"
现在打开 config/image.php 并将驱动程序从 gd 更改为 imagick。
return [
'driver' => 'imagick',
];
清除配置缓存:
artisan config:clear