<?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 => 'ja',
  ),
  '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' => 'ja',
    '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> を呼んで設定することもできます。
   しかし、できるだけ php.ini で設定しておくことをお勧めします。
   というのも、スクリプトの実行が始まるまえにエラーが発生することもありえるからです。
  </p>

  <p class="para">
   開発中は常に、
   <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> にしておくべきです。
   PHP が発する報告をすべて確認して対応する必要があるからです。
   実際の運用に入ったら、もう少しレベルを下げて
   <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">
   もうひとつの項目が
   <a href="errorfunc.configuration.php#ini.log-errors" class="link"><code class="parameter">log_errors</code></a>
   で、これを有効にしておくと、PHP はエラーをログに記録します。
   発生したすべてのエラーが、
   <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); ?>