无论条件如何,Assert都返回true


Assert is returning true no matter the condition

例如,如果我有

assert('2<1');

结果是断言返回为真。我还复制粘贴了示例#2从http://php.net/manual/en/function.assert.php,它也评估每一个断言为真,当这显然不是情况。知道是什么引起的吗?

编辑

<?php
    var_dump(assert('2<1'));
?>

输出

true

如果我在http://sandbox.onlinephpfunctions.com/上运行这个,断言如预期的那样失败。然而,这并没有发生在我的测试服务器上。

编辑#2 -PHP版本:

PHP 7.0.9-1+deb.sury.org~trusty+1 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.9-1+deb.sury.org~trusty+1, Copyright (c) 1999-2016, by Zend Technologies

Assert有3个设置:

(from php.ini):

-1:根本不编译
0:在运行时跳过断言
1:执行断言

…http://php.net/zend.assertions

-1表示"生产",1表示开发,0表示一个奇怪的中间地带,看起来像生产。

显然,在非开发模式下,这意味着assert将始终返回true,有效地绕过检查。