Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Docker-php-ext-install mcrypt missing folder

I try to install mcrypt in my docker image based on php:7.2-apache. Therefore I use the RUN-Command from the documentation and also answerd here but I receive this error:

error: /usr/src/php/ext/mcrypt does not exist   usage: /usr/local/bin/docker-php-ext-install [-jN] ext-name [ext-name ...]     ie: /usr/local/bin/docker-php-ext-install gd mysqli    /usr/local/bin/docker-php-ext-install pdo pdo_mysql    /usr/local/bin/docker-php-ext-install -j5 gd mbstring mysqli pdo pdo_mysql shmop  if custom ./configure arguments are necessary, see docker-php-ext-configure  Possible values for ext-name: bcmath bz2 calendar ctype curl dba dom enchant exif fileinfo filter ftp  gd gettext gmp hash iconv imap interbase intl json ldap mbstring mysqli oci8  odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_oci pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell readline recode reflection session shmop simplexml snmp soap sockets sodium spl standard sysvmsg sysvsem sysvshm tidy tokenizer wddx xml xmlreader xmlrpc xmlwriter xsl zend_test zip  Some of the above modules are already compiled into PHP; please check the output of "php -i" to see which modules are already loaded. ERROR: Service 'web' failed to build: The command '/bin/sh -c apt-get update && apt-get install -y          libfreetype6-dev          libjpeg62-turbo-dev          libmcrypt-dev          libpng-dev     && docker-php-ext-install -j$(nproc) iconv mcrypt gd mbstring zip' returned a non-zero code: 1 

My Dockerfile:

FROM php:7.2-apache  RUN apt-get update && apt-get install -y \      libfreetype6-dev \      libjpeg62-turbo-dev \      libmcrypt-dev \      libpng-dev \ && docker-php-ext-install -j$(nproc) iconv mcrypt gd mbstring zip #    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ #    && docker-php-ext-install -j$(nproc) gd   COPY ./etc/000-default.conf /etc/apache2/sites-available/  EXPOSE 80 

Has anybody an idea how to solve or how to get the needed files in the requested folder?

Thanks!

like image 420
Gerrit Avatar asked Dec 06 '17 09:12

Gerrit


People also ask

Where is Docker PHP ext install?

docker-php-source We just take it as a storage directory of PHP extension source code downloaded from the Internet. In fact, all PHP extension source code extensions are stored in the path: / usr/src/php/ext.

What is mcrypt PHP extension?

The mcrypt extension is an interface to the mcrypt cryptography library. This extension is useful for allowing PHP code using mcrypt to run on PHP 7.2+. The mcrypt extension is included in PHP 5.4 through PHP 7.1.

What is Docker PHP ext configure?

docker-php-ext-install - build extension from source, usually executes docker-php-ext-configure for build configuration, enables the extension (php.ini entry) by executing docker-php-ext-enable after all. docker-php-ext-enable - enables an already extension by adding a specific entry to php. ini.


2 Answers

mcrypt extension is not provided with the PHP source since 7.2 , but are instead available through PECL. To install a PECL extension in docker, use pecl install to download and compile it, then use docker-php-ext-enable to enable it:

pecl install mcrypt-1.0.4 docker-php-ext-enable mcrypt 

Before the pecl install you may need to install/update the package libmcrypt-dev

apt-get update && apt-get install -y libmcrypt-dev 
like image 123
MoiioM Avatar answered Sep 18 '22 18:09

MoiioM


Building on MoiioM's answer, this worked for me using the 7.2-stretch Docker image from PHP

RUN apt-get update && apt-get install -y libmcrypt-dev \     && pecl install mcrypt-1.0.4 \     && docker-php-ext-enable mcrypt 
like image 25
rlorenzo Avatar answered Sep 17 '22 18:09

rlorenzo