为什么 get_env() 将我的布尔环境变量视为字符串?

gdb*_*dbj 4 php wordpress

我将我的 Wordpress 实例从 4.5 升级到 4.8,由于某种原因,我的布尔环境变量现在作为“false”字符串返回而不是false. 因为我的 PHP 版本没有改变,所以我对这个改变感到有点困惑。然而,更重要的是,关于未来,通过环境变量管理将布尔值导入 PHP 的最佳方法是什么?

这是我拥有的 .env 行:

WP_FORCE_SSL_ADMIN=false
Run Code Online (Sandbox Code Playgroud)

这是我在 wp-config.php 中true由于字符串转换而返回的行。

define('FORCE_SSL_ADMIN', getenv('WP_FORCE_SSL_ADMIN'));
Run Code Online (Sandbox Code Playgroud)

这是 var_dump:

["WP_FORCE_SSL_ADMIN"]=>
string(5) "false"
Run Code Online (Sandbox Code Playgroud)

我知道我可以简单地重构定义来解释字符串转换,但我很烦恼我不明白什么时候不应该有什么改变。这适用于 wordpress 4.5 版。

寻找一个答案来解释将布尔变量从我的环境传递到 PHP 的最佳方法,还是我总是必须考虑字符串转换?

gdb*_*dbj 8

以防万一有人来这里寻找我如何解决它的答案,我所做的只是与“true”字符串进行比较。

define('FORCE_SSL_ADMIN', strtolower(getenv('WP_FORCE_SSL_ADMIN')) === "true");
Run Code Online (Sandbox Code Playgroud)

虽然这有效,但对我来说仍然感觉不太正确,就像我错过了一些东西。