短标签(short_open_tag=on时的echo标签)可移植性差且工具链不友好:docker官方镜像、aws lambda等默认关闭且不可修改,phpstan、psalm及ide语法支持不佳。
短标签 在 PHP 中默认是否可用?
PHP 8.0 起已彻底移除短标签 的支持(包括 和 =),仅保留 <?php 和 ='...'?>(即 short_open_tag=On 时的 echo 标签)。但很多老项目仍依赖 ,直接升级会报 Parse error: syntax error, unexpected '。
如何让 PHP 7.4 或更早版本启用 ?
需手动开启配置项 short_open_tag,但注意:它只控制 和 = 是否被解析,不影响 <?php —— 后者永远有效。
- 修改
php.ini,设short_open_tag = On,然后重启 Web 服务(如 Apache 或 PHP-FPM) - 若无权限改全局配置,可在 Apache 的
.htaccess中加php_flag short_open_tag on(仅限 mod_php,不适用于 FPM) - Nginx + PHP-FPM 场景下,无法通过
fastcgi_param动态开启该指令,必须改php.ini或 pool 配置中的php_admin_value[short_open_tag] = 1
PHP 8+ 迁移旧短标签的实用替换方案
不能靠配置回退,必须代码层处理。推荐用命令行批量替换,但要注意边界和嵌套场景: