<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.errors.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'zh',
  ),
  'this' => 
  array (
    0 => 'language.errors.basics.php',
    1 => '基础概要',
    2 => '基础概要',
  ),
  'up' => 
  array (
    0 => 'language.errors.php',
    1 => '错误',
  ),
  'prev' => 
  array (
    0 => 'language.errors.php',
    1 => '错误',
  ),
  'next' => 
  array (
    0 => 'language.errors.php7.php',
    1 => 'PHP 7 错误处理',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'zh',
    'path' => 'language/errors/basics.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.errors.basics" class="sect1">
 <h2 class="title">基础概要</h2>

 <p class="para">
  PHP 对一些内部的错误情况进行报错。
  这些错误可以用来表示不同的情况，可以根据需要将错误显示出来或记录到日志中。
 </p>

 <p class="para">
    每个 PHP 产生的错误都包含了类型。可查看
  <a href="errorfunc.constants.php" class="link">错误类型清单</a>，它附带了不同类型行为的简短描述和
  产生的原因。
 </p>

 <div class="sect2" id="language.errors.basics.handling">
  <h3 class="title">PHP 错误处理</h3>

  <p class="para">
   当未设置错误处理函数时，PHP 会根据配置处理出现的错误。
   php.ini 中 
   <a href="errorfunc.configuration.php#ini.error-reporting" class="link"><code class="parameter">error_reporting</code></a> 的配置或者是运行时调用
   <span class="function"><a href="function.error-reporting.php" class="function">error_reporting()</a></span> 控制了哪些错误需要报告，哪些错误需要自动忽略。
   由于有些错误会在运行用户脚本前就可能出现，所以强烈推荐用配置指令来设置。
  </p>

  <p class="para">
   在开发环境里为了发现并修复 PHP 产生的问题，
   应该总是把 <a href="errorfunc.configuration.php#ini.error-reporting" class="link"><code class="parameter">error_reporting</code></a>
   设置为 <strong><code><a href="errorfunc.constants.php#constant.e-all">E_ALL</a></code></strong>。
   
   在生产环境里，用户可能为了降低信息的详细程度，
   想要将它设置为类似 <code class="code">E_ALL &amp; ~E_NOTICE &amp; ~E_DEPRECATED</code>，
   但很多情况下 <strong><code><a href="errorfunc.constants.php#constant.e-all">E_ALL</a></code></strong> 也同样适用，这样可以更早地警告潜在问题。
  </p>

  <p class="para">
    PHP 对这些错误的处理方式，取决于两个更深的 php.ini 指令。

   <a href="errorfunc.configuration.php#ini.display-errors" class="link"><code class="parameter">display_errors</code></a> 
   控制了是否要将错误作为脚本输出的一部分显示。
   在生产环境里应该禁用，因为可能包含类似数据库密码这样的敏感信息，
   而在开发环境中应该启用，能确保立即报告问题。
  </p>

  <p class="para">
    PHP 不仅能显示错误，还可以开启 <a href="errorfunc.configuration.php#ini.log-errors" class="link"><code class="parameter">log_errors</code></a>
    指令来记录错误日志。它能根据 <a href="errorfunc.configuration.php#ini.error-log" class="link"><code class="parameter">error_log</code></a> 的设置，记录任意错误到文件或者 syslog。
   特别适用于生产环境，用户可以记录发生的错误，并根据这些错误生成报告。
  </p>
 </div>

 <div class="sect2" id="language.errors.basics.user">
  <h3 class="title">用户的错误处理器</h3>

  <p class="para">
    如果 PHP 默认错误处理器还不能满足要求，用户可以通过 <span class="function"><a href="function.set-error-handler.php" class="function">set_error_handler()</a></span> 
    设置自定义错误处理器，可处理很多类型的错误。
   虽然有些类型的错误不能通过这种方式处理，但能处理的类型可以用脚本合适的方式处理：
   例如为用户显示自定义错误页面，同时以一种比日志更直接的方式上报错误，例如发送邮件。
  </p>
 </div>
</div><?php manual_footer($setup); ?>