PHP5错误报告
PHP具有一些非常好的错误报告功能,可以告诉您许多有关您要执行的代码的信息。此错误报告总是很高兴在调试代码时可用,因为它可以帮助您解决创建动态网页时发生的许多常见错误。
但是,此错误报告几乎总是在生产服务器上关闭,因为它可以显示您不希望所有人看到的有关服务器的信息。例如,错误可以揭示有关服务器文件结构,查询中的数据库字段,数据库用户名,$_ GET和$_POST命令等信息。
那么,当您在关闭错误报告的服务器上工作时,会发生什么?在不冒系统安全风险的情况下,如何查看任何错误?有几种方法可以打开错误报告,而无需更改php.ini文件和重新启动服务器。请注意,本文描述了错误报告,而不是要描述错误处理或自定义错误的触发。
ini_set()
您可以php.ini使用ini_set()函数在文件中设置许多值。它具有以下语法:
string ini_set( string varname, string newvalue )
这将使用第二个参数中的值设置配置指令。该函数以字符串形式返回先前的配置选项。如果您想知道varname的当前值是什么,则可以使用ini_get函数,如下所示:
string ini_get( string varname )
这将返回php.ini文件中设置的配置指令的当前值。
要打开错误报告,您需要一起使用两个配置指令,error_reporing报告错误,而display_errors实际显示错误。有关错误的配置指令列表,请参见附录A。
这是使用ini_set的示例。
<?php
ini_set('error_reporting', E_ALL & ~E_NOTICE);
ini_set('display_errors',1);
/* more code */
include('foo.bar'); // 不存在的文件–引起警告
?>
E_ALL和E_NOTICE是值,是常量;有关所有可用常数值的列表,请参见附录B。
在运行时设置错误报告有两个限制。尽管display_errors可以在运行时设置(使用ini_set()),但是如果脚本有致命错误,它将不会有任何影响。这是因为没有执行所需的运行时动作。因此,当代码出现语法错误或致命错误时,它只是停止并显示空白屏幕。因此,要解决此问题,您可以在一个文件的顶部设置配置指令,并在其下包含要测试的文件,这将在包含项上显示所有错误。
<?phpini_set ('error_reporting', E_ALL & ~E_NOTICE);
ini_set ('display_errors',1);
include('syntax.php');
?>
error_reporting()
此功能与设置最后一个方法中使用的两个配置指令的作用相同。它只是提供了一种设置错误级别的简单机制,但是如果已在php.ini文件中将其关闭,则仍然需要使用display_errors指令来实际显示错误。
error_get_last()
如果您不想改变任何配置指令,可以使用error_get_last函数。它返回一个关联数组,其中包含代码执行期间发生的错误的列表。这是其用法的一个例子。
<?phpecho $a;
echo "<pre>";
print_r(error_get_last());
echo "</pre>";
?>
这将打印出以下信息。
Array(
[type] => 8
[message] => Undefined variable: a
[file] => C:\htdocs\test.php
[line] => 2
)
尽管此功能可能有用,但确实有其局限性。例如,它只能用于打印警告和通知,因为致命错误只会停止脚本,而不会调用此函数。
debug_backtrace() 和 debug_print_backtrace()
这里提到这些功能是因为它们对于查看程序在没有错误的情况下哪里出错非常有用。
debug_backtrace()
自PHP 4起,此功能已可用,并且用于生成程序执行的后向跟踪。它返回一个包含一堆变量的关联数组,该变量与已执行的任何函数有关。这包括诸如include()和的系统功能strstr()。
debug_print_backtrace()
仅从PHP 5开始可用,此函数将打印回溯记录。这基本上是函数调用,包含或必需的文件和eval()ed内容的列表。
htaccess配置
Apache的一个鲜为人知的选择是在运行时通过.htaccess文件使用情况来设置PHP配置指令。根据您要更改的值,有两个选项可用。如果配置选项具有布尔数据类型,则使用php_flag选项。如果配置选项具有整数或字符串数据类型,则使用php_value选项。格式如下:
php_flag configuration_name on|offphp_value configuration_name value
因此,要在脚本中显示错误,只需在包含以下内容的同一目录中包含.htaccess文件:
php_value error_reporting 8191php_flag display_errors on
请注意,为了打开错误报告,您需要使用值而不是常量,因为Apache不了解PHP包含的常量。
以上是 PHP5错误报告 的全部内容, 来源链接: utcz.com/z/341493.html