1
0
mirror of https://github.com/php/doc-zh.git synced 2026-03-24 23:22:14 +01:00
Files
archived-doc-zh/language/errors/basics.xml
zhonglang b418d13004 Some updates and W/S fixes. (#137)
* Some updates and W/S fixes.
2021-12-14 19:37:03 +08:00

88 lines
3.5 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: de9c65c91ff1710d8b2d2ec955caea0162679305 Maintainer: daijie Status: ready -->
<sect1 xml:id="language.errors.basics" xmlns="http://docbook.org/ns/docbook">
<title>基础概要</title>
<para>
PHP 对一些内部的错误情况进行报错。
这些错误可以用来表示不同的情况,可以根据需要将错误显示出来或记录到日志中。
</para>
<para>
每个 PHP 产生的错误都包含了类型。可查看
<link linkend="errorfunc.constants">错误类型清单</link>,它附带了不同类型行为的简短描述和
产生的原因。
</para>
<sect2 xml:id="language.errors.basics.handling">
<title>PHP 错误处理</title>
<para>
当未设置错误处理函数时PHP 会根据配置处理出现的错误。
php.ini 中
<link linkend="ini.error-reporting"><parameter>error_reporting</parameter></link> 的配置或者是运行时调用
<function>error_reporting</function> 控制了哪些错误需要报告,哪些错误需要自动忽略。
由于有些错误会在运行用户脚本前就可能出现,所以强烈推荐用配置指令来设置。
</para>
<para>
在开发环境里为了发现并修复 PHP 产生的问题,
应该总是把 <link linkend="ini.error-reporting"><parameter>error_reporting</parameter></link>
设置为 <constant>E_ALL</constant>
在生产环境里,用户可能为了降低信息的详细程度,
想要将它设置为类似 <code>E_ALL &amp; ~E_NOTICE &amp; ~E_DEPRECATED</code>
但很多情况下 <constant>E_ALL</constant> 也同样适用,这样可以更早地警告潜在问题。
</para>
<para>
PHP 对这些错误的处理方式,取决于两个更深的 php.ini 指令。
<link linkend="ini.display-errors"><parameter>display_errors</parameter></link>
控制了是否要将错误作为脚本输出的一部分显示。
在生产环境里应该禁用,因为可能包含类似数据库密码这样的敏感信息,
而在开发环境中应该启用,能确保立即报告问题。
</para>
<para>
PHP 不仅能显示错误,还可以开启 <link linkend="ini.log-errors"><parameter>log_errors</parameter></link>
指令来记录错误日志。它能根据 <link linkend="ini.error-log"><parameter>error_log</parameter></link> 的设置,记录任意错误到文件或者 syslog。
特别适用于生产环境,用户可以记录发生的错误,并根据这些错误生成报告。
</para>
</sect2>
<sect2 xml:id="language.errors.basics.user">
<title>用户的错误处理器</title>
<para>
如果 PHP 默认错误处理器还不能满足要求,用户可以通过 <function>set_error_handler</function>
设置自定义错误处理器,可处理很多类型的错误。
虽然有些类型的错误不能通过这种方式处理,但能处理的类型可以用脚本合适的方式处理:
例如为用户显示自定义错误页面,同时以一种比日志更直接的方式上报错误,例如发送邮件。
</para>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->