PHP 默认禁用短标签

PHP 默认不启用短标签 ,直接写会导致解析失败或输出原样代码;必须通过配置显式开启,且不同 PHP 版本和 SAPI(如 CLI / Apache / FPM)行为不一致。
确认当前 short_open_tag 状态
运行 php -i | grep short_open_tag 或在脚本中调用 var_dump(ini_get('short_open_tag'));。返回 "1" 表示已启用,"" 或 "0" 表示禁用。注意:CLI 和 Web SAPI 的配置可能独立,需分别检查。
修改 php.ini 启用 short_open_tag
找到正在使用的 php.ini 文件(用 php --ini 查看路径),编辑后设置:
short_open_tag = On
重启 Web 服务器(如 Apache)或 PHP-FPM 进程才能生效。若使用 Docker,需确保修改的是容器内实际加载的 php.ini,而非宿主机文件。
立即学习“PHP免费学习笔记(深入)”;
e新时代企业网站管理系统6.0 ACC版
系统共有:常规管理,公告管理,新闻管理,产品管理,采购订单管理,留言反馈管理,短信管理,用户管理,管理员管理,在线邮件管理,系统模板管理,图品缩略图及水印管理,Flash幻灯片管理,统计调查管理,系统数据调用管理,自定义扩展管理,语言标签库管理。18个主要功能模块组成。5月10号更新:1、全新双语模式设计开发2、多级动态JS菜单,支持在线添加,修改,删除3、新增单页管理模块,如扩展企业简介,联系方
替代方案:避免依赖短标签
PHP 8.0+ 已废弃 (非 =),仅保留 = 作为合法短回显标签。因此:
-
= $name; ?>在short_open_tag = On或Off下都可用(PHP 5.4+) -
echo $name; ?>必须依赖short_open_tag = On - 现代框架(Laravel、Symfony)默认不使用
,推荐统一用
常见问题与陷阱
开启后仍不生效?可能是:
- 改错了
php.ini—— 检查php --ini输出的 “Loaded Configuration File” 路径 - Web 服务器缓存了旧配置 —— Apache 需
sudo systemctl restart apache2,PHP-FPM 需sudo systemctl restart php*-fpm - 某些托管环境(如 cPanel、共享主机)禁止修改此选项,只能联系管理员或改用完整标签
会被误判为短标签 —— 若模板含 XML 声明,开启short_open_tag可能导致解析错误
真正要命的不是开不开,而是不同环境配置不一致导致代码迁移时突然挂掉 —— 建议新项目直接回避 ,老项目开启前先全局搜索验证兼容性。