Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker的麻烦+;PHP7+;GD导致;调用未定义的函数imagecreatefromjpeg();_Php_Docker_Gd_Php Gd - Fatal编程技术网

Docker的麻烦+;PHP7+;GD导致;调用未定义的函数imagecreatefromjpeg();

Docker的麻烦+;PHP7+;GD导致;调用未定义的函数imagecreatefromjpeg();,php,docker,gd,php-gd,Php,Docker,Gd,Php Gd,尝试使用imagecreatefromjpeg创建图像时遇到问题,使用此Dockerfile生成容器: FROM php:7.1-apache RUN apt-get update && \ apt-get install -y -qq git \ libjpeg62-turbo-dev \ apt-transport-https \ libfreetype6-dev \ libmcrypt-dev \

尝试使用
imagecreatefromjpeg
创建图像时遇到问题,使用此
Dockerfile
生成容器:

FROM  php:7.1-apache

RUN apt-get update && \
    apt-get install -y -qq git \
        libjpeg62-turbo-dev \
        apt-transport-https \
        libfreetype6-dev \
        libmcrypt-dev \
        libpng12-dev \
        libssl-dev \
        zip unzip \
        nodejs \
        npm \
        wget \
        vim

RUN pecl install redis && docker-php-ext-enable redis
RUN docker-php-ext-install -j$(nproc) iconv mcrypt zip pdo pdo_mysql gd bcmath

COPY ./containers/yii.conf /etc/apache2/sites-available/000-default.conf

RUN for mod in rewrite headers; do a2enmod $mod; done && service apache2 restart

WORKDIR /var/www/html/
GD安装正确(libjpeg也正确-都出现在
php-i
phpinfo()
)中,但是
imagecreatefromjpeg
不起作用,我不知道为什么


我还运行了
apt install libjpeg dev libpng dev libfreetype6 dev
尝试~force~重新安装(或重新配置),但似乎没有成功(是的,我还重新启动了容器)



我尝试过
安装libgd2 xpm dev*
,但显然没有解决问题


解决了的 我没能把它放进去

RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
RUN docker-php-ext-install -j$(nproc) gd
进入我的档案


完整修订的Dockerfile:

FROM  php:7.1-apache

RUN apt-get update && \
    apt-get install -y -qq git \
        libjpeg62-turbo-dev \
        apt-transport-https \
        libfreetype6-dev \
        libmcrypt-dev \
        libpng12-dev \
        libssl-dev \
        zip unzip \
        nodejs \
        npm \
        wget \
        vim

RUN pecl install redis && docker-php-ext-enable redis
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
RUN docker-php-ext-install -j$(nproc) iconv mcrypt zip pdo pdo_mysql gd bcmath

COPY ./containers/yii.conf /etc/apache2/sites-available/000-default.conf

RUN for mod in rewrite headers; do a2enmod $mod; done && service apache2 restart

WORKDIR /var/www/html/
对于PHP5.6

FROM php:5.6-apache

RUN apt-get update && apt-get install -y \ 
libfreetype6-dev libjpeg62-turbo-dev \ 
libgd-dev libpng12-dev
RUN docker-php-ext-configure gd \ 
--with-freetype-dir=/usr/include/ \ 
--with-jpeg-dir=/usr/include/
RUN docker-php-ext-install gd
如果仍然不工作,可以重新安装容器

root@e8db647c96c4:/var/www/html# php -i | grep -i GD
/usr/local/etc/php/conf.d/docker-php-ext-gd.ini,
gd
GD Support => enabled
GD Version => bundled (2.1.0 compatible)
gd.jpeg_ignore_warning => 1 => 1
root@e8db647c96c4:/var/www/html# 
docker rm <container id> 
docker-compose build --pull
docker-compose up
docker-rm
docker编写构建--拉
码头工人整理
PHP7.4(阿尔卑斯山) 如果有人正在努力使用PHP7.4在GD中启用JPEG支持,下面是为了能够使用
imagecreatefromjpeg()
函数,我必须做的事情。 我的示例基于Alpine 3.10,如果您使用其他发行版,请根据您的需要进行调整

首先安装依赖项,在我的例子中,除了JPEG之外,我还需要对PNG文件的支持

apk add jpeg-dev libpng-dev
之后,我们可以运行
docker php ext configure
命令来配置支持JPEG的gd。请注意,标志
——with jpeg dir
已更改为
——with jpeg
,我们不需要提供标志来启用PNG。更多您可以在GD部分中阅读

docker-php-ext-configure gd --with-jpeg
在这之后,让我们直接运行
docker php ext install
来安装GD本身

docker-php-ext-install -j$(nproc) gd
完整示例

FROM php:7.4-fpm-alpine3.10

RUN apk add jpeg-dev libpng-dev \
    && docker-php-ext-configure gd --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd

我需要使用
docker php ext configure gd
命令来处理类似的错误。谢谢请将您的解决方案移到它自己的答案,谢谢。新版本的PHP 7.4不再具有使用freetype dir和使用jpeg dir的选项
。相反,我使用了选项
——使用freetype
——使用jpeg
,我的testsuite再次变为绿色。在上面的Dockerfile内容示例中,路径
/usr/include/
是在容器内还是在主机上?我相信Dockerfile只能引用其中的路径?(谢谢)正确,路径在容器内。如果您收到错误
程序包'libpng12 dev'没有安装候选程序
(该程序已在一段时间前删除),您可以将
libpng12 dev
更改为
libpng dev
,以使其正常工作。您节省了我的时间。谢谢
FROM php:7.4-fpm-alpine3.10

RUN apk add jpeg-dev libpng-dev \
    && docker-php-ext-configure gd --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd