PHP 默认关闭短标签

PHP 默认关闭短标签 ,开启后才能使用 ... ?>(注意不是 =),但必须确认你的环境允许且团队/框架无冲突。
检查当前 short_open_tag 状态
直接运行 phpinfo(),搜索 short_open_tag 项,看值是否为 On;或用命令行快速验证:
php -r "echo ini_get('short_open_tag') ? 'enabled' : 'disabled';"
返回 disabled 表示未启用。该设置属于 PHP 核心配置,不能在脚本里用 ini_set() 动态修改。
修改 php.ini 开启 short_open_tag
找到你实际生效的 php.ini 文件(php --ini 可查路径),编辑并确保这一行存在且未被注释:
立即学习“PHP免费学习笔记(深入)”;
short_open_tag = On
常见疏漏点:
- Web 服务器(如 Apache/Nginx)和 CLI 使用的是不同
php.ini,需分别确认 - 某些 Docker 镜像或云平台(如 Laravel Forge、PaaS)会覆盖配置,需检查启动脚本或环境变量
- 若使用 PHP-FPM,改完后必须重启
php-fpm进程,仅 reload 不生效
替代方案:用 = 更安全
= 是“短回显标签”,从 PHP 5.4 起默认始终开启,无需配置 short_open_tag。绝大多数场景下应优先用它代替 :
echo $name; ?> = $name ?>
前者依赖 short_open_tag,后者永远可用。现代框架(Laravel、Symfony)和模板引擎(Twig、Blade)也基本不依赖纯 ,强行开启反而增加迁移和部署风险。
注意 XML 和 PHP 混用时的冲突
如果 PHP 文件里含 XML 声明(如 ),而 short_open_tag = On,PHP 会把 当作 PHP 开始标记,导致解析错误或空白输出。此时要么关掉短标签,要么把 XML 声明写成字符串输出:
echo '';
这个细节在生成 RSS、SVG 或配置文件时容易被忽略,调试时看到意外的解析失败,第一反应该查这里。











