我们用 php -a
命令行的方式,来举个例子说明:
$ php -a php > echo $foo;
Notice: Undefined variable: foo in php shell code on line 1
这里只是一个 notice 级别的错误,PHP 仍然会愉快的继续执行。这对有「重异常」编程经验的人来说会带来困惑,例如在 Python 中,引用一个不存在的变量会抛出异常:
$ python >>> print foo Traceback (most recent call last): File ">stdin", line 1, in >module> NameError: name 'foo' is not defined
本质上的差异在于 Python 会对任何小错误进行抛错,因此开发人员可以确信任何潜在的问题或者边缘的案例都可以被捕捉到,与此同时 PHP 仍然会保持执行,除非极端的问题发生才会抛出异常。
PHP 有几个错误严重性等级。三个最常见的的信息类型是错误(error)、通知(notice)和警告(warning)。它们有不同的严重性: E_ERROR
、E_NOTICE
和 E_WARNING
。错误是运行期间的严重问题,通常是因为代码出错而造成,必须要修正它,否则会使 PHP 停止执行。通知是建议性质的信息,是因为程序代码在执行期有可能造成问题,但程序不会停止。 警告是非致命错误,程序执行也不会因此而中止。
#PHP 遭遇除0错误,产生Warning #在设置 error_reporting(0);的情况下, #即便PHP遭遇了除0错误,也会继续运行 [root@Dev_Test ~]$php -a Interactive shell php > echo 5/0; PHP Warning: Division by zero in php shell code on line 1 INF
另一个在编译期间会报错的信息类型是 E_STRICT
。这个信息用來建议修改程序代码以维持最佳的互通性并能与今后的 PHP 版本兼容。
错误报告可以由 PHP 配置及函数调用改变。使用 PHP 内置的函数 error_reporting(),可以设定程序执行期间的错误等级,方法是传入预定义的错误等级常量,意味着如果你只想看到警告和错误(而非通知),你可以这样设定:
<?php error_reporting(E_ERROR | E_WARNING);
你也可以控制错误是否在屏幕上显示 (开发时比较有用)或隐藏后记录日志 (适用于正式环境)。如果想知道更多细节,可以点下一页,继续查看。