Hello stackOverflow Community,
我在安装现有的dockerfile时遇到了一些问题。我有Docker版本4.9.0(80466(,也有新版本4.11。我在Windows10系统上使用WSL2。
我得到了这些错误:
executor failed running [/bin/sh -c docker-php-ext-install ctype exif gd iconv simplexml zip]: exit code: 2
make: *** [Makefile:35: build] Error 1
我认为安装过程中有一些重要的东西:
#5 48.54 mkdir .libs
#5 48.55 cc -I/usr/include -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -I. -I/usr/src/php/ext/iconv -DPHP_ATOM_INC -I/usr/src/php/ext/iconv/include -I/usr/src/php/ext/iconv/main -I/usr/src/php/ext/iconv -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -I/usr/include -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c /usr/src/php/ext/iconv/iconv.c -fPIC -DPIC -o .libs/iconv.o
#5 48.56 In file included from /usr/local/include/php/Zend/zend_config.h:1,
#5 48.56 from /usr/local/include/php/Zend/zend_portability.h:43,
#5 48.56 from /usr/local/include/php/Zend/zend_types.h:25,
#5 48.56 from /usr/local/include/php/Zend/zend.h:27,
#5 48.56 from /usr/local/include/php/main/php.h:33,
#5 48.56 from /usr/src/php/ext/iconv/iconv.c:25:
#5 48.56 /usr/local/include/php/main/../main/php_config.h:1976: warning: "ICONV_BROKEN_IGNORE" redefined
#5 48.56 1976 | #define ICONV_BROKEN_IGNORE 0
#5 48.56 |
#5 48.56 In file included from /usr/src/php/ext/iconv/iconv.c:22:
#5 48.56 /usr/src/php/ext/iconv/config.h:59: note: this is the location of the previous definition
#5 48.56 59 | #define ICONV_BROKEN_IGNORE 1
#5 48.56 |
#5 48.71 /usr/src/php/ext/iconv/iconv.c: In function 'zm_startup_miconv':
#5 48.71 /usr/src/php/ext/iconv/iconv.c:284:25: error: '_libiconv_version' undeclared (first use in this function)
#5 48.71 284 | _libiconv_version >> 8, _libiconv_version & 0xff);
#5 48.71 | ^~~~~~~~~~~~~~~~~
#5 48.71 /usr/src/php/ext/iconv/iconv.c:284:25: note: each undeclared identifier is reported only once for each function it appears in
#5 48.72 /usr/src/php/ext/iconv/iconv.c: In function '_php_iconv_appendl':
#5 48.72 /usr/src/php/ext/iconv/iconv.c:181:15: warning: implicit declaration of function 'libiconv'; did you mean 'iconv'? [-Wimplicit-function-declaration]
#5 48.72 181 | #define iconv libiconv
#5 48.72 | ^~~~~~~~
#5 48.72 /usr/src/php/ext/iconv/iconv.c:453:29: note: in expansion of macro 'iconv'
#5 48.72 453 | if (iconv(cd, (char **)&in_p, &in_left, (char **) &out_p, &out_left) == (size_t)-1) {
#5 48.72 | ^~~~~
#5 48.76 make: *** [Makefile:192: iconv.lo] Error 1
------
executor failed running [/bin/sh -c docker-php-ext-install ctype exif gd iconv simplexml zip]: exit code: 2
make: *** [Makefile:35: build] Error 1
这是Dockerfile:中的内容
ARG PHP_VERSION=7.4
FROM php:${PHP_VERSION}-cli-alpine AS betl
RUN apk add --no-cache
zip
zlib-dev
openssh
rsync
freetype-dev
libjpeg-turbo-dev
libpng-dev
libxml2-dev
libzip-dev
git
;
#Test: delet iconv im next line
RUN docker-php-ext-install ctype exif gd iconv simplexml zip
#Test: new from Rollexpert 20 and 21:
#Test: RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.13/community/ gnu-libiconv=1.15-r3
#Test: ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php
RUN apk add --no-cache libssh2-dev autoconf build-base
RUN pecl install ssh2-1.3.1 && docker-php-ext-enable ssh2
RUN apk add jpeg-dev libpng-dev
&& docker-php-ext-configure gd --with-jpeg
&& docker-php-ext-install -j$(nproc) gd
ENV COMPOSER_HOME /composer
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV PATH /composer/vendor/bin:$PATH
ENV PHP_CONF_DIR=/usr/local/etc/php/conf.d
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN echo "memory_limit=-1" > $PHP_CONF_DIR/99_memory-limit.ini
WORKDIR /betl
ENTRYPOINT ["sh", "./bin/lconsole"]
扩展:ctype
、iconv
、simplexml
已经包含在标准php:8-fpm-alpine映像中,因此不应该安装它们。只要从你的RUN docker-php-ext-install ...
行中删除他们的名字,你就可以了。
供参考:
$ docker run php:8-fpm-alpine php -m
[PHP Modules]
Core
ctype
curl
date
dom
fileinfo
filter
ftp
hash
iconv
json
libxml
mbstring
mysqlnd
openssl
pcre
PDO
pdo_sqlite
Phar
posix
random
readline
Reflection
session
SimpleXML
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
[Zend Modules]