【问题标题】:How to enable Short Tags in Php7 in Alpine Linux?如何在 Alpine Linux 的 Php7 中启用短标签?
【发布时间】:2020-04-28 09:07:34
【问题描述】:

我已经知道一般修复;将设置 "short_open_tag=On" 放在 php.ini 中,然后重新启动您正在使用的任何服务器,但是对于 Alpine Linux,情况要复杂一些。

您通过命令apk add php7 安装的php7 软件包似乎带有嵌入到php 可执行文件中的预配置“配置命令”,并且指定的配置选项之一是'--disable-short-tags'。为了演示,这是php -i在创建一个简单的docker容器后的输出:

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"]

根据我在线阅读的内容,您无法覆盖这些配置,并且配置文件将被忽略。关于我应该做些什么来解决这个问题的任何想法?

【问题讨论】:

  • 有趣的问题 - 使用短开标签的 php 代码是什么?显而易见的答案是替换短的打开标签(这不难用几个 sed 命令,或者在线的许多脚本之一)
  • 嗯,它是一个包含大量“遗留”类型的 php 代码的大型存储库,其中包含大约 50 个带有短标签的文件。我想如果迫在眉睫,我可以按照你的说法替换它们。如果可能的话,我宁愿避免大提交,但如果这是最好的,那么我想我会这样做。
  • 50 个文件并没有那么大。从长远来看,我认为你最好咬紧牙关。

标签: php docker alpine php-shorttags


【解决方案1】:

alpine 中的 php 配置在 /etc/php7/

所以你需要添加类似的东西

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

到你的 Dockerfile 中,php-overrides.ini 里面应该有 short_open_tag=on

【讨论】:

    【解决方案2】:

    设置

    short_open_tag=On
    

    在 php.ini 中

    然后重新启动您的网络服务器。

    【讨论】:

      猜你喜欢
      • 2013-01-29
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 2015-09-21
      • 2018-01-25
      • 2013-10-07
      • 2016-06-29
      • 2019-02-02
      相关资源
      最近更新 更多