2016-10-19 3 views
4

Это как утверждение, даже не вызванное. Я запутался.Утверждение не работает в php. Так просто. Что я делаю не так?

версия

:~/code/x/test$ php -v 
PHP 7.0.11-1+deb.sury.org~xenial+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.11-1+deb.sury.org~xenial+1, Copyright (c) 1999-2016, by Zend Technologies 

сценарий

:~/code/x/test$ cat x.php 
<?php 

print ("Hello\n"); 

assert_options(ASSERT_ACTIVE,true); 
assert_options(ASSERT_BAIL,true); 

assert(false); 
assert(true); 

print ("Bye\n"); 

, когда я запускаю его

:~/code/x/test$ php x.php 
Hello 
Bye 

я ожидал бы программу прекратить с исключением. Я сошел с ума?

+1

В PHP7.0.12 я получаю 'Warning: Assert(): утверждают (ложь) failed' – RiggsFolly

+0

Утверждай немного изменился в чеке PHP7 [учебное пособие] (http://php.net/manual/en /function.assert.php) – RiggsFolly

+0

Я обновился до 7.0.12, но результат тот же. 'code'php -v PHP 7.0.12-1 + deb.sury.org ~ xenial + 1 (cli) (NTS) Copyright (c) 1997-2016 PHP Group Zend Engine v3.0.0, Авторское право (c) 1998-2016 Zend Technologies с Zend OPcache v7.0.12-1 + deb.sury.org ~ xenial + 1, Copyright (c) 1999-2016, Zend Technologies : ~/code/x/test $ php x.php Здравствуйте, Bye –

ответ

8

Спасибо RiggsFolly.

Похоже, утверждения утверждены из коробки на 7.0. В моем файле php.ini zend.assertions было установлено значение -1, что означает, что они игнорируются. Я изменил настройку на 1.

[Assertion] 
; Switch whether to compile assertions at all (to have no overhead at run-time) 
; -1: Do not compile at all 
; 0: Jump over assertion at run-time 
; 1: Execute assertions 
; Changing from or to a negative value is only possible in php.ini! (For turning assertions on and off at run-time, see assert.active, when zend.assertions = 1) 
; Default Value: 1 
; Development Value: 1 
; Production Value: -1 
; http://php.net/zend.assertions 
zend.assertions = 1 

Сценарий работает так, как ожидалось.

:~/code/x/test$ php x.php 
Hello 
PHP Warning: assert(): assert(false) failed in /home/ubuntu/code/x/test/x.php on line 8 
+0

Включите' assert.exception' в '1', если вам нужно увидеть исключение (введено в php 7). – jitendrapurohit