web-dev-qa-db-ja.com

「未定義関数imagecreatefromjpeg()の呼び出し」という結果になるDocker + PHP7 + 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 \
        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_を実行して、再インストール(または再構成)を強制的に実行しようとしましたが、成功しなかったようです(はい、コンテナーも再起動します)。

_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# 
_

_root@e8db647c96c4:/var/www/html# docker-php-ext-enable Gd

warning: Gd (Gd.so) is already loaded!

root@e8db647c96c4:/var/www/html# 
_

_apt install 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に。


完全に改訂された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/
_
24

PHP 5.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

それでも動作しない場合は、コンテナを再インストールできます。

docker rm <container id> 
docker-compose build --pull
docker-compose up
5
Jin