php - PHP定义的奇怪行为()
问题描述
我SetEnv YII_ENV prod
在 apache vhost 文件中设置了一个 env var,因为我的项目中有以下行:
defined('YII_ENV') or define('YII_ENV', 'dev');
问题是 defined() 的行为真的很奇怪。我尝试了以下代码:
echo getenv('YII_ENV');
echo '<br>';
var_dump(defined('YII_ENV'));
结果:
prod
bool(false)
我可以回显 var 的值,但 defined() 返回 false。我知道我可以重写条件,但我真的很好奇为什么会这样。
解决方案
解释 -defined
功能
检查给定的命名常量是否存在
因此,defined('YII_ENV')
检查是否定义了常量 。YII_ENV
但是同名的环境变量YII_ENV
不是常量,而是另一个实体。
这就是为什么你得到你的输出,这是完全正确的。
推荐阅读
- neural-network - Julia Flux, Out of Memory with accuracy 函数
- python - 不使用 str.split() 将 Pandas 列拆分为多列
- ios - 使用 Swift Autolayout 和 ScrollView 控件苦苦挣扎
- html - 似乎仅在三星移动浏览器上存在视口问题
- php - 获取以逗号分隔的结果
- c# - 为什么 animSetInteger 不能正常工作?
- oracle - 优化 Oracle 中的嵌套循环查询
- python - CONLL 2003 BIO 格式的 NER 数据准备
- c++ - 删除copy-ctor和copy-assignment - public、private还是protected?
- sorting - 8 位整数的基数排序(降序),得到排序索引。如何?