2017-12-06 34 views
8

Tôi cố gắng cài đặt mcrypt trong hình ảnh docker dựa trên php:7.2-apache. Vì vậy, tôi sử dụng RUN-Command từ tài liệu và cũng thưa: here nhưng tôi nhận được lỗi này:Docker-php-ext-install mcrypt thư mục bị thiếu

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 

Có ai một ý tưởng làm thế nào để giải quyết hoặc làm thế nào để có được sự cần thiết tệp trong thư mục được yêu cầu?

Cảm ơn!

+0

Tốt nhất là không nên sử dụng PHP Mcrypt, nó là Abandonware, chưa được cập nhật trong những năm và không hỗ trợ phần đệm PKCS # 7 (nhũ danh PKCS # 5) chuẩn, chỉ đệm không chuẩn null mà thậm chí không thể được sử dụng với dữ liệu nhị phân. mcrypt có nhiều [lỗi] nổi bật (https://sourceforge.net/p/mcrypt/bugs/) có niên đại từ năm 2003. Phần mở rộng mcrypt-deprecated sẽ bị loại bỏ trong PHP 7.2. Thay vào đó, hãy cân nhắc sử dụng [defuse] (https://github.com/defuse/php-encryption) hoặc [RNCryptor] (https://github.com/RNCryptor), chúng cung cấp giải pháp hoàn chỉnh và đang được duy trì và chính xác. – zaph

Trả lời

1

Để cài đặt tiện ích mở rộng mcrypt, bạn phải đảm bảo bạn đã cài đặt libmcrypt-dev.

Cố gắng thêm:

RUN apt install libmcrypt-dev 

trước khi bạn đang cố gắng để cài đặt phần mở rộng cho php.

Cập nhật

Cố gắng chạy đầu tiên:

docker-php-ext-configure mcrypt 

và sau đó

docker-php-ext-install mcrypt 
+0

Tôi sử dụng lệnh đó trong Dockerfile nhưng nó không hoạt động. Tôi đã thêm nó vào bài đăng của mình. – Gerrit

+0

@Gerrit kiểm tra cập nhật của tôi – Tomasz

16

mycrypt phần mở rộng không được cung cấp với nguồn PHP kể từ 7.2, nhưng thay vì có sẵn thông qua PECL. Để cài đặt một mở rộng PECL trong docker, sử dụng pecl install để tải về và biên dịch nó, sau đó sử dụng docker-php-ext-enable để kích hoạt nó:

pecl install mcrypt-1.0.1 
docker-php-ext-enable mcrypt 
+0

FYI, tôi đã phải xóa 'mcrypt' khỏi dòng mà nó đang cố gắng cài đặt nó, cũng như thêm văn bản trong câu hỏi này. Sau đó, tất cả dường như hoạt động. – Hans

Các vấn đề liên quan