-
Notifications
You must be signed in to change notification settings - Fork 79
/
Copy pathbasics.xml
105 lines (93 loc) · 4.8 KB
/
basics.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: de9c65c91ff1710d8b2d2ec955caea0162679305 Maintainer: takagi Status: ready -->
<!-- Credits: mumumu -->
<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> を呼んで設定することもできます。
しかし、できるだけ php.ini で設定しておくことをお勧めします。
というのも、スクリプトの実行が始まるまえにエラーが発生することもありえるからです。
</para>
<para>
開発中は常に、
<link linkend="ini.error-reporting"><parameter>error_reporting</parameter></link>
を <constant>E_ALL</constant> にしておくべきです。
PHP が発する報告をすべて確認して対応する必要があるからです。
実際の運用に入ったら、もう少しレベルを下げて
<code>E_ALL & ~E_NOTICE & ~E_DEPRECATED</code>
などのようにすることもあるでしょう。しかし、できれば運用中も
<constant>E_ALL</constant> にしておきたいものです。
そうすれば、何かの問題が発生しそうなときに早い段階で気づけるからです。
</para>
<para>
エラーが発生したときの PHP の挙動を決める php.ini 設定項目が、あと二つあります。
ひとつは
<link linkend="ini.display-errors"><parameter>display_errors</parameter></link>
で、これは、エラーの内容をスクリプトの出力に含めるかどうかを設定します。
この項目は、運用時には常に無効にしておくべきです。
エラーメッセージの中には、データベースのパスワードなどの機密情報が含まれることもありえるからです。
しかし、開発中は有効にしておくほうが便利です。
どこに問題があるのかに、すぐに気づけるからです。
</para>
<para>
もうひとつの項目が
<link linkend="ini.log-errors"><parameter>log_errors</parameter></link>
で、これを有効にしておくと、PHP はエラーをログに記録します。
発生したすべてのエラーが、
<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
-->