PHP短标签(如)默认禁用,需在php.ini中设置short_open_tag=On才能启用,因其与XML声明冲突且降低代码可移植性,官方推荐使用标准标签。

PHP 短标签 默认是关闭的
PHP 7.4+ 已彻底移除 short_open_tag 的运行时开关能力,必须通过配置文件启用;PHP 8.0+ 仍保留该配置项,但默认值为 Off。trae(应为 traefik 或本地开发环境如 laragon/xampp?此处按常见 PHP-FPM 环境理解)本身不控制 PHP 解析行为,真正起作用的是 PHP 的 php.ini 配置。
确认当前 PHP 配置位置和 short_open_tag 状态
在终端执行:
php --ini查看加载的
php.ini 路径;再运行:php -r "echo ini_get('short_open_tag');" 输出 1 表示已开启,0 表示关闭。
- 若用的是 Nginx + PHP-FPM,需修改 PHP-FPM 所用的
php.ini(不是 CLI 的) - 修改后必须重启 PHP-FPM 进程(如
sudo systemctl restart php-fpm或对应版本服务名) - 仅改 Nginx 配置或 traefik 配置无效——它们不解析 PHP
启用 short_open_tag 的具体操作步骤
编辑 php.ini 文件,找到这一行:
;short_open_tag = Off
改为:
立即学习“PHP免费学习笔记(深入)”;
short_open_tag = On
- 注意:有些发行版(如 Ubuntu 的
php*-fpm包)会把配置拆到/etc/php/*/fpm/conf.d/下,可新建99-short-tag.ini,内容只写short_open_tag = On - 若使用 Docker,需在
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 - PHP 8.4 计划彻底移除该配置项(RFC 已通过草案)
- 替代方案更安全:
=是始终可用的简写(等价于),无需额外配置
真正要改的不是 traefik 或 nginx,而是 PHP 自身的解析规则;而这个规则,正越来越不鼓励你用短标签。











