web-dev-qa-db-fra.com

Problèmes avec Docker + PHP7 + Gd entraînant "Appel à la fonction non définie imagecreatefromjpeg ()"

Je rencontre des problèmes lorsque j'essaie de créer une image en utilisant imagecreatefromjpeg en utilisant ce Dockerfile pour générer le conteneur:

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 était correctement installé (libjpeg aussi - les deux apparaissant dans php -i Et phpinfo()) mais imagecreatefromjpeg ne fonctionne pas et je ne sais pas pourquoi.


J'ai également exécuté apt install libjpeg-dev libpng-dev libfreetype6-dev En essayant de ~ forcer ~ la réinstallation (ou la reconfiguration) mais semble ne pas réussir (oui, je redémarre également le conteneur).

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# 

J'ai essayé apt install libgd2-xpm-dev* Et apparemment, cela ne résout pas le problème.


Résolu

Il me manquait de mettre

RUN docker-php-ext-configure Gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
RUN docker-php-ext-install -j$(nproc) Gd

dans mon Dockerfile.


Dockerfile entièrement révisé:

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
John Murowaniecki

Pour 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

S'il ne fonctionne toujours pas, peut réinstaller le conteneur.

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