#php #docker
Вопрос:
Установка расширения readline на php:7.3-fpm-alpine завершается неудачно для этих версий Alpine:
- php:7.3-fpm-alpine3.14 / php:7.3-fpm-альпийский
- php:7.3-fpm-alpine3.13
Это минимальный файл Dockerfile:
FROM php:7.3-fpm-alpine
RUN apk add --update --no-cache libedit-dev
RUN docker-php-ext-install -j$(nproc) readline
В этом и заключается ошибка:
#6 13.76
#6 13.76 creating libtool
#6 13.79 appending configuration tag "CXX" to libtool
#6 13.85 configure: creating ./config.status
#6 13.89 config.status: creating config.h
#6 13.92 /bin/sh /usr/src/php/ext/readline/libtool --mode=compile cc -I. -I/usr/src/php/ext/readline -DPHP_ATOM_INC -I/usr/src/php/ext/readline/include -I/usr/src/php/ext/readline/main -I/usr/src/php/ext/readline -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 -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c /usr/src/php/ext/readline/readline.c -o readline.lo
#6 13.92 /bin/sh /usr/src/php/ext/readline/libtool --mode=compile cc -I. -I/usr/src/php/ext/readline -DPHP_ATOM_INC -I/usr/src/php/ext/readline/include -I/usr/src/php/ext/readline/main -I/usr/src/php/ext/readline -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 -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c /usr/src/php/ext/readline/readline_cli.c -o readline_cli.lo
#6 13.96 mkdir .libs
#6 13.97 cc -I. -I/usr/src/php/ext/readline -DPHP_ATOM_INC -I/usr/src/php/ext/readline/include -I/usr/src/php/ext/readline/main -I/usr/src/php/ext/readline -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 -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c /usr/src/php/ext/readline/readline.c -fPIC -DPIC -o .libs/readline.o
#6 13.97 cc -I. -I/usr/src/php/ext/readline -DPHP_ATOM_INC -I/usr/src/php/ext/readline/include -I/usr/src/php/ext/readline/main -I/usr/src/php/ext/readline -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 -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c /usr/src/php/ext/readline/readline_cli.c -fPIC -DPIC -o .libs/readline_cli.o
#6 14.11 In file included from /usr/local/include/php/main/php.h:37,
#6 14.11 from /usr/src/php/ext/readline/readline.c:25:
#6 14.11 /usr/src/php/ext/readline/readline.c: In function 'zif_readline_info':
#6 14.11 /usr/src/php/ext/readline/readline.c:258:38: error: 'rl_mark' undeclared (first use in this function)
#6 14.11 258 | add_assoc_long(return_value,"mark",rl_mark);
#6 14.11 | ^~~~~~~
#6 14.11 /usr/local/include/php/Zend/zend_API.h:398:90: note: in definition of macro 'add_assoc_long'
#6 14.11 398 | #define add_assoc_long(__arg, __key, __n) add_assoc_long_ex(__arg, __key, strlen(__key), __n)
#6 14.11 | ^~~
#6 14.11 /usr/src/php/ext/readline/readline.c:258:38: note: each undeclared identifier is reported only once for each function it appears in
#6 14.11 258 | add_assoc_long(return_value,"mark",rl_mark);
#6 14.11 | ^~~~~~~
#6 14.11 /usr/local/include/php/Zend/zend_API.h:398:90: note: in definition of macro 'add_assoc_long'
#6 14.11 398 | #define add_assoc_long(__arg, __key, __n) add_assoc_long_ex(__arg, __key, strlen(__key), __n)
#6 14.11 | ^~~
#6 14.12 /usr/src/php/ext/readline/readline.c:260:47: error: 'rl_pending_input' undeclared (first use in this function)
#6 14.12 260 | add_assoc_long(return_value,"pending_input",rl_pending_input);
#6 14.12 | ^~~~~~~~~~~~~~~~
#6 14.12 /usr/local/include/php/Zend/zend_API.h:398:90: note: in definition of macro 'add_assoc_long'
#6 14.12 398 | #define add_assoc_long(__arg, __key, __n) add_assoc_long_ex(__arg, __key, strlen(__key), __n)
#6 14.12 | ^~~
#6 14.12 /usr/src/php/ext/readline/readline.c:267:60: error: 'rl_completion_suppress_append' undeclared (first use in this function)
#6 14.12 267 | add_assoc_bool(return_value,"completion_suppress_append",rl_completion_suppress_append);
#6 14.12 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#6 14.12 /usr/local/include/php/Zend/zend_API.h:400:90: note: in definition of macro 'add_assoc_bool'
#6 14.12 400 | #define add_assoc_bool(__arg, __key, __b) add_assoc_bool_ex(__arg, __key, strlen(__key), __b)
#6 14.12 | ^~~
#6 14.14 make: *** [Makefile:194: readline.lo] Error 1
#6 14.14 make: *** Waiting for unfinished jobs....
------
executor failed running [/bin/sh -c docker-php-ext-install -j$(nproc) readline]: exit code: 2
Официальный выпуск: https://github.com/docker-library/php/issues/1207
У кого-нибудь есть решение?
С уважением
Стефан
Комментарии:
1. Вы проверили BTS компилируемого расширения? Компиляция в Docker на самом деле не является чем-то особенным, кстати, так что место, где вы сообщили об этой ошибке, немного не то. Кроме того, было бы интересно, работает ли он в других версиях PHP.
Ответ №1:
Строка чтения является расширением по умолчанию
$ docker run --rm php:7.3-fpm-alpine php -i | grep readline
Configure Command => './configure' '--build=x86_64-linux-musl' '--with-config-file-path=/usr/local/etc/php' '--with-config-file-scan-dir=/usr/local/etc/php/conf.d' '--enable-option-checking=fatal' '--with-mhash' '--with-pic' '--enable-ftp' '--enable-mbstring' '--enable-mysqlnd' '--with-password-argon2' '--with-sodium=shared' '--with-pdo-sqlite=/usr' '--with-sqlite3=/usr' '--with-curl' '--with-openssl' '--with-readline' '--with-zlib' '--enable-fpm' '--with-fpm-user=www-data' '--with-fpm-group=www-data' '--disable-cgi' 'build_alias=x86_64-linux-musl'
readline