Как включить короткие теги в Php7 в Alpine Linux?

Я уже знаю об общем исправлении; поместите параметр «short_open_tag=On» в php.ini, а затем перезапустите любой сервер, который вы используете, однако с Alpine Linux ситуация немного сложнее.

Похоже, что пакет php7, который вы устанавливаете с помощью команды apk add php7, поставляется с предварительно настроенной «командой настройки», встроенной в исполняемые файлы php, и одним из указанных параметров конфигурации является '--disable-short-tags'. Чтобы продемонстрировать, это вывод php -i после создания простого контейнера докеров:

phpinfo()
PHP Version => 7.3.13

System => Linux 9ea27eea7b8e 4.9.184-linuxkit #1 SMP Tue Jul 2 22:58:16 UTC 2019 x86_64
Build Date => Dec 22 2019 05:57:19
Configure Command =>  './configure'  '--build=x86_64-alpine-linux-musl' '--host=x86_64-alpine-linux-musl' '--prefix=/usr' '--program-suffix=7' '--libdir=/usr/lib/php7' '--datadir=/usr/share/php7' '--sysconfdir=/etc/php7' '--localstatedir=/var' '--with-layout=GNU' '--with-pic' '--with-pear=/usr/share/php7' '--with-config-file-path=/etc/php7' '--with-config-file-scan-dir=/etc/php7/conf.d' '--disable-short-tags' '--enable-bcmath=shared' '--with-bz2=shared' '--enable-calendar=shared' '--enable-ctype=shared' '--with-curl=shared' '--enable-dba=shared' '--with-db4' '--with-dbmaker=shared' '--with-gdbm' '--enable-dom=shared' '--with-enchant=shared' '--enable-exif=shared' '--enable-fileinfo=shared' '--enable-ftp=shared' '--with-gd=shared' '--with-freetype-dir=/usr' '--disable-gd-jis-conv' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--with-webp-dir=/usr' '--with-xpm-dir=/usr' '--with-gettext=shared' '--with-gmp=shared' '--with-iconv=shared' '--with-imap=shared' '--with-imap-ssl' '--with-icu-dir=/usr' '--enable-intl=shared' '--enable-json=shared' '--with-kerberos' '--with-ldap=shared' '--with-ldap-sasl' '--with-libedit' '--enable-libxml' '--with-libxml-dir=/usr' '--enable-mbstring=shared' '--with-mysqli=shared,mysqlnd' '--with-mysql-sock=/run/mysqld/mysqld.sock' '--enable-mysqlnd=shared' '--enable-opcache=shared' '--with-openssl=shared' '--with-system-ciphers' '--with-password-argon2' '--enable-pcntl=shared' '--with-pcre-regex=/usr' '--enable-pdo=shared' '--with-pdo-dblib=shared' '--with-pdo-mysql=shared,mysqlnd' '--with-pdo-odbc=shared,unixODBC,/usr' '--with-pdo-pgsql=shared' '--with-pdo-sqlite=shared,/usr' '--with-pgsql=shared' '--enable-phar=shared' '--enable-posix=shared' '--with-pspell=shared' '--without-readline' '--with-recode=shared' '--enable-session=shared' '--enable-shmop=shared' '--enable-simplexml=shared' '--with-snmp=shared' '--enable-soap=shared' '--with-sodium=shared' '--enable-sockets=shared' '--with-sqlite3=shared,/usr' '--enable-sysvmsg=shared' '--enable-sysvsem=shared' '--enable-sysvshm=shared' '--with-tidy=shared' '--enable-tokenizer=shared' '--with-unixODBC=shared,/usr' '--enable-wddx=shared' '--enable-xml=shared' '--enable-xmlreader=shared' '--with-xmlrpc=shared' '--enable-xmlwriter=shared' '--with-xsl=shared' '--enable-zip=shared' '--with-libzip=/usr' '--with-zlib' '--with-zlib-dir=/usr' '--disable-phpdbg' '--enable-fpm' '--enable-embed' '--with-litespeed' 'build_alias=x86_64-alpine-linux-musl' 'host_alias=x86_64-alpine-linux-musl'

А это Dockerfile:

FROM nginx:alpine
RUN apk --update --no-cache add php7
CMD ["php", "-i"]

Из того, что я прочитал в Интернете, вы не можете переопределить эти конфигурации, и файлы конфигурации будут игнорироваться. Любые идеи о том, что я должен сделать, чтобы исправить это?


person Chen Leikehmacher    schedule 10.01.2020    source источник
comment
Интересный вопрос - что такое php-код, использующий короткие открытые теги? Очевидный ответ — заменить короткие открытые теги (что несложно сделать с помощью нескольких команд sed или одного из множества онлайн-скриптов).   -  person AD7six    schedule 10.01.2020
comment
Ну, это большой репозиторий с большим количеством php-кода устаревшего типа, в котором около 50 файлов с короткими тегами. Я полагаю, если дело дойдет до драки, я могу просто заменить их, как вы говорите. Я бы предпочел избегать больших коммитов, если это возможно, но если это к лучшему, то, думаю, я это сделаю.   -  person Chen Leikehmacher    schedule 10.01.2020
comment
50 файлов не так уж и много. Я думаю, что вам лучше в долгосрочной перспективе стиснуть зубы.   -  person Greg Schmidt    schedule 10.01.2020


Ответы (2)


Конфигурация php в alpine находится в /etc/php7/,

поэтому вам нужно добавить что-то вроде

COPY ./php-overrides.ini /etc/php7/conf.d/

в ваш Dockerfile, и php-overrides.ini должен иметь в нем short_open_tag=on

person 13DaGGeR    schedule 16.01.2020

Установлен

short_open_tag=On

в php.ini

И перезапустите веб-сервер.

person Ivan Bolnikh    schedule 10.01.2020