【问题标题】:Docker-php-ext-install mcrypt missing folderDocker-php-ext-install mcrypt 缺少文件夹
【发布时间】:2018-05-20 03:30:59
【问题描述】:

我尝试根据php:7.2-apache 在我的 docker 映像中安装 mcrypt。因此,我使用文档中的 RUN-Command 并回答了here,但我收到此错误:

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

我的 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

有人知道如何解决或如何在请求的文件夹中获取所需的文件吗?

谢谢!

【问题讨论】:

  • 最好不要使用 PHP mcrypt,它是废弃软件,多年未更新,不支持标准 PKCS#7(née PKCS#5)填充,仅支持非标准空填充甚至不能用于二进制数据。 mcrypt 有许多出色的 bugs 可以追溯到 2003 年。不推荐使用的 mcrypt-extension 将在 PHP 7.2 中删除。而是考虑使用defuseRNCryptor,它们提供了一个完整的解决方案并且正在维护并且是正确的。

标签: php docker dockerfile mcrypt php-7.2


【解决方案1】:

基于 MoiioM 的回答,这适用于我使用来自 PHP7.2-stretch Docker 映像

RUN apt-get update && apt-get install -y libmcrypt-dev \
    && pecl install mcrypt-1.0.4 \
    && docker-php-ext-enable mcrypt

【讨论】:

    【解决方案2】:

    mcrypt 扩展自 7.2 以来未随 PHP 源提供,而是可用 through PECL。要在docker 中安装PECL 扩展,请使用pecl install 下载并编译它,然后使用docker-php-ext-enable 启用它:

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

    pecl install 之前,您可能需要安装/更新包libmcrypt-dev

    apt-get update && apt-get install -y libmcrypt-dev
    

    【讨论】:

    • 仅供参考,我必须从尝试安装它的行中删除 mcrypt,并在此问题中添加文本。在那之后,一切似乎都奏效了。
    • @Hans,你的意思是 apt-get remove mcrypt 删除它?
    • 你需要先安装libmcrypt-dev包
    • @tim - 不,Hans 表示他的行 docker-php-ext-install -j$(nproc) iconv mcrypt ... 需要删除 mcrypt; mcrypt 不能通过docker-php-ext-install 安装(因为 mcrypt 不再作为普通扩展提供)。 pecl install mcrypt-1.0.2 是现在要使用的命令。要使 mcrypt 可供使用,也请启用,如本答案所示。
    • 而如果你想在 PHP 7.4 中使用它,你需要使用 mcrypt-1.0.3。
    【解决方案3】:

    要安装mcrypt 扩展,您必须确保安装了libmcrypt-dev,这是必需的。

    尝试添加:

    RUN apt install libmcrypt-dev
    

    在您尝试安装 php 扩展之前。

    更新

    尝试先运行:

    docker-php-ext-configure mcrypt
    

    然后

    docker-php-ext-install mcrypt
    

    【讨论】:

    • 我在我的 Dockerfile 中使用了该命令,但它不起作用。我将它添加到我的帖子中。
    • 也不行。它说“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 readline recode 反射会话 shmop simplexml snmp soap sockets sodium spl 标准 sysvmsg sysvsem sysvshm tidy tokenizer wddx xml xmlreader xmlrpc xmlwriter xsl zend_test zip"
    • 错误:/usr/src/php/ext/libmcrypt-dev 不存在
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 2015-10-26
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多