CLI环境下PHP include_once仅输出文件内容未执行代码问题求助
问题分析与解决方案
问题根源
你的include.php文件开头使用了短标签<?,而CLI环境下PHP默认未启用短标签解析(short_open_tag配置项为Off),导致PHP将<?识别为普通文本直接输出,而非PHP代码的起始标记。而Nginx环境对应的PHP配置开启了短标签支持,因此能正常执行代码。
解决方法
有两种可行的修复方案:
- 修改文件标签(推荐):将
include.php开头的<?替换为标准PHP标签<?php,这是跨环境兼容的最优方案,无需依赖配置差异。修改后的代码如下:
<?php require_once(dirname(__FILE__).'/classes/CommonObject.php'); require_once(dirname(__FILE__).'/classes/Callback.php'); require_once(dirname(__FILE__).'/classes/AdminSecurity.php'); require_once(dirname(__FILE__).'/classes/Site.php');
- 调整CLI环境PHP配置:找到CLI对应的
php.ini文件(注意与Nginx使用的可能不是同一个配置文件),将short_open_tag参数设置为On:
short_open_tag = On
修改后重启CLI会话即可生效,但这种方式依赖环境配置,更换环境后可能再次出现问题。
验证
修改完成后,再次在CLI中执行php test.php,即可正常执行include.php中的代码,不会再输出文件内容。
内容的提问来源于stack exchange,提问作者Sergei Illarionov
相关产品推荐
相关产品推荐

