php 为什么get_env()把我的布尔环境变量当作字符串?

snvhrwxg  于 2023-04-19  发布在  PHP
关注(0)|答案(2)|浏览(113)

我把我的Wordpress示例从4.5升级到4.8,由于某种原因,我的布尔环境变量现在返回的是一个字符串“false”而不是false。由于我的PHP版本没有改变,我对这个变化有点困惑。然而,更重要的是,关于未来,通过环境变量管理布尔值进入PHP的最佳方法是什么?
下面是我的.env行:

WP_FORCE_SSL_ADMIN=false

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

define('FORCE_SSL_ADMIN', getenv('WP_FORCE_SSL_ADMIN'));

下面是var_dump:

["WP_FORCE_SSL_ADMIN"]=>
string(5) "false"

我知道我可以简单地重构define来解释字符串转换,但是我不明白在什么都不应该发生的时候发生了什么变化,这让我很烦恼,这在wordpress 4.5版上工作得很好。
寻找一个答案来解释将布尔变量从我的环境传递到PHP的最佳方法,或者我总是必须考虑字符串转换?

wkyowqbh

wkyowqbh1#

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

define('FORCE_SSL_ADMIN', strtolower(getenv('WP_FORCE_SSL_ADMIN')) === "true");

虽然这个工作,它仍然不觉得很对我来说,就像我错过了什么。

06odsfpq

06odsfpq2#

我有同样的问题.但它的工作原理如下:

$isDebug = filter_var($_ENV['DEBUG']??false, FILTER_VALIDATE_BOOLEAN);
//OR
$isDebug = filter_var(getenv('DEBUG')??false, FILTER_VALIDATE_BOOLEAN);

相关问题