PHP短标签(如)默认禁用,需在php.ini中设置short_open_tag=On才能启用,因其与XML声明冲突且降低代码可移植性,官方推荐使用标准标签。
默认是关闭的PHP 7.4+ 已彻底移除 short_open_tag 的运行时开关能力,必须通过配置文件启用;PHP 8.0+ 仍保留该配置项,但默认值为 Off。trae(应为 traefik 或本地开发环境如 laragon/xampp?此处按常见 PHP-FPM 环境理解)本身不控制 PHP 解析行为,真正起作用的是 PHP 的 php.ini 配置。
在终端执行:
php --ini查看加载的
php.ini 路径;再运行:php -r "echo ini_get('short_open_tag');" 输出 1 表示已开启,0 表示关闭。
php.ini(不是 CLI 的)sudo systemctl restart php-fpm 或对应版本服务名)编辑 php.ini 文件,找到这一行:
;short_open_tag = Off

改为:
short_open_tag = On
php*-fpm 包)会把配置拆到 /etc/php/*/fpm/conf.d/ 下,可新建 99-short-tag.ini,内容只写 short_open_tag = On
Dockerfile 中用 RUN echo "short_open_tag = On" >> /usr/local/etc/php/conf.d/docker-php-ext-short-tag.ini
echo 'hello'; ?> 才能被识别;否则会原样输出或报错 Parse error: syntax error, unexpected end of file
短标签与 ASP 风格标签()已被弃用多年,且与 XML 冲突()。现代框架(Laravel、Symfony)和 PSR 标准明确要求使用完整标签 。
short_open_tag
= 是始终可用的简写(等价于 ),无需额外配置
真正要改的不是 traefik 或 nginx,而是 PHP 自身的解析规则;而这个规则,正越来越不鼓励你用短标签。