【发布时间】:2019-12-05 01:43:18
【问题描述】:
谁能解释一下?我假设我正在做一些令人难以置信的愚蠢的事情,并且急切地等待启蒙。
<?php
echo "phpversion() == " . phpversion() . "\n\n";
var_dump(FALSE);
var_dump(False);
var_dump(false);
echo "\n";
echo "(FALSE === false) == " . ((FALSE === false) ? "true" : "false") . "\n";
echo "(((bool)FALSE) === false) == " . ((((bool)FALSE) === false) ? "true" : "false") . "\n";
?>
我得到这个输出:
phpversion() == 7.2.25-1+0~20191128.32+debian8~1.gbp108445
int(0)
bool(false)
bool(false)
(FALSE === false) == false
(((bool)FALSE) === false) == true
我关心的原因是,fopen() 的文档说它在失败时返回FALSE。但是,至少在这个 PHP 版本中,它返回了false,所以我的if ($fh === FALSE) 检查失败了,这让我觉得fopen() 成功了,尽管它确实失败了。
我的朋友正在运行一个不同的版本(Ubuntu 上的 PHP 7.2.24),并且在那里,FALSE === false。我假设如果FALSE != false 到处都是爆炸,那么……到底发生了什么?
【问题讨论】:
-
PHP 的真/假常量不区分大小写,并且始终将
var_dump与bool相同。您必须在其他地方定义了一个常量... -
不过,这就是我的全部剧本!该常量定义是否可能在其他地方完成,在某个 .ini 文件中?
-
顺便说一句,它的行为与您在我的 Ubuntu 机器上所期望的完全一样:
phpversion() == 7.2.19-0ubuntu0.18.04.2bool(false)bool(false)bool(false)(FALSE === false) == true(((bool)FALSE) === false) == trueDERP 好吧,想象一下格式正确. -
您是否将名为
FALSE的环境变量设置为0? -
想法用尽了......
httpd.conf或.htaccess呢?