実行時設定
php.ini
の設定により動作が変化します。
名前 | デフォルト | 変更可能 | 変更履歴 |
---|---|---|---|
error_reporting | NULL | PHP_INI_ALL | |
display_errors | "1" | PHP_INI_ALL | |
display_startup_errors | "0" | PHP_INI_ALL | |
log_errors | "0" | PHP_INI_ALL | |
log_errors_max_len | "1024" | PHP_INI_ALL | |
ignore_repeated_errors | "0" | PHP_INI_ALL | |
ignore_repeated_source | "0" | PHP_INI_ALL | |
report_memleaks | "1" | PHP_INI_ALL | |
track_errors | "0" | PHP_INI_ALL | |
html_errors | "1" | PHP_INI_ALL | |
xmlrpc_errors | "0" | PHP_INI_SYSTEM | |
xmlrpc_error_number | "0" | PHP_INI_ALL | |
docref_root | "" | PHP_INI_ALL | |
docref_ext | "" | PHP_INI_ALL | |
error_prepend_string | NULL | PHP_INI_ALL | |
error_append_string | NULL | PHP_INI_ALL | |
error_log | NULL | PHP_INI_ALL | |
syslog.facility | "LOG_USER" | PHP_INI_SYSTEM | PHP 7.3.0 以降で有効です。 |
syslog.filter | "no-ctrl" | PHP_INI_ALL | PHP 7.3.0 以降で有効です。 |
syslog.ident | "php" | PHP_INI_SYSTEM | PHP 7.3.0 以降で有効です。 |
PHP_INI_* モードの詳細および定義については どこで設定を行うのか を参照してください。 以下に設定ディレクティブの簡単な説明を示します。
error_reporting
intエラー出力レベルを設定します。パラメータは、あるビットフィールドを表 す整数か定数名で指定します。このerror_reportingのレベルと定数は、 定義済の定数および
php.ini
に記述されています。 実行時に設定するには、 error_reporting() 関数を指定してください。 display_errors ディレクティブも参照してください。PHP 5.3 以降のデフォルトは
E_ALL
& ~E_NOTICE
& ~E_STRICT
& ~E_DEPRECATED
です。 この設定ではE_NOTICE
やE_STRICT
、そしてE_DEPRECATED
レベルのエラーは出力されません。開発時にはこのエラーを表示させたい場合もあるかもしれません。 PHP 5.3.0 以前では、E_ALL
& ~E_NOTICE
& ~E_STRICT
がデフォルトです。注意:
開発時に
E_NOTICE
を有効にすることにはいくつ かの利点があります。デバッグのために、NOTICE メッセージはコード の中のバグの可能性について警告を与えます。例えば、代入されていな い値を使用した場合は、警告を発生します。 これは、書き間違いを見付け、デバッグの時間を節約するために非常 に有用です。NOTICEメッセージは、好ましくないコードに警告します。 例えば、$arr[item]
は$arr['item']
と書く方が好ましいです。 これは、PHPが"item"
を定数として取り扱うためです。 定数でない場合、PHPは配列の添字用の文字列と判断します。注意:
PHP 5.4.0 より前のバージョンの場合は
E_ALL
にE_STRICT
が含まれないため、 PHP < 5.4.0 では明示的にこのエラーレベルを設定する必要があります。 開発中にE_STRICT
を有効にすることはいくつかの利点があります。 STRICT メッセージの提案に従えば、コードの相互運用性を高めて将来のバージョンでも動くようする助けとなります。 メッセージに含まれる内容は、静的でないメソッドを静的に呼び出していたり 利用中のトレイトで定義しているプロパティをクラス定義でも行っていたりといった内容です。 また、PHP 5.3 より前のバージョンでは、 非推奨の機能 (インスタンス化の際にオブジェクトを参照で代入するなど) を使ったときにもE_STRICT
エラーが発生していました。注意: PHP 定数の、PHP 以外での使用
PHP の定数を、
httpd.conf
など PHP の外部で使用しても何の意味もありません。外部で使用する場合には、 int 型の値を指定しなければなりません。 また、エラーレベルはこれからも追加されることがあるので、 最大値 (E_ALL
に対応する値) は変わる可能性があります。そこで、E_ALL
を指定する場面では2147483647
(E_ALL
だけではなくすべてのエラーを含める) のような数を指定するようにしましょう。 これは現状の全ビットに対応した上で、かつ値が将来追加された場合にも対応できます。display_errors
stringエラーをHTML出力の一部として画面に出力するかどうかを定義します。
"stderr" を指定すると、エラーの内容を
stdout
(標準出力) ではなくstderr
(標準エラー出力) に送ります。この値は PHP 5.2.4 以降で使用可能です。それより前のバージョンでは、 このディレクティブは bool 型でした。注意:
開発をサポートする仕組みであり、本番のシステムでは 使用すべきではありません (例えばインターネットに接続されたシステムなど)。
注意:
display_errors は実行時にも設定可能(ini_set() 関数を用いて)ですが、スクリプトが致命的(fatal)なエラーを発生した場合は その設定は反映されません。なぜなら、要求されたアクションは 実行されなかったからです。
display_startup_errors
booldisplay_errorsをonにした場合でも、PHPの起動シーケンスにおいて発 生したエラーは表示されません。デバッグ時を除き、 display_startup_errorsをoffにしておくことが強く推奨されます。
log_errors
boolエラーメッセージを、サーバーのエラーログまたはerror_logに記録するかどうかを指定 します。このオプションはサーバーに依存します。
注意:
実用Webサイトではエラー表示を行う代わりにエラーを記録することを 強く推奨します。
log_errors_max_len
intlog_errorsの最大長をバイト単位で設定します。 error_log には、 この設定で情報が追加されます。デフォルトは 1024 で、0 を指定すると 最大長の制限は全く適用されなくなります。 この長さはエラーログへの記録や エラーの表示、そして
$php_errormsg
に適用されます。 しかし、明示的に呼び出される error_log() のような関数には適用されません。intを使用する際、 その値はバイト単位で測られます。 この FAQ に記載された 短縮表記を使用することも可能です。
ignore_repeated_errors
bool繰り返されるメッセージを記録しません。エラーの繰り返しは、 ignore_repeated_sourceが trueに設定されるまで同じファイルの同じ行で発生します。
ignore_repeated_source
boolメッセージの繰り返しを無視する場合にメッセージのソースを無視しま す。この設定をOnにすると、異なるファイルまたはソース行からの同じ エラーメッセージの繰り返しを記録しなくなります。
report_memleaks
boolこのパラメータを On (デフォルト) にすると、Zend メモリマネージャーが検出した メモリリークの報告を表示します。この報告は、Posix プラットフォームでは標準エラー出力に送られます。 Windows では、デバッガに OutputDebugString() を使って送られ、 » DbgView のようなツールで見ることができます。 このパラメータが使えるのはデバッグビルドだけであり、かつ error_reporting で
E_WARNING
を有効にしている場合のみです。track_errors
bool有効にした場合、直近のエラーメッセージが、
$php_errormsg
変数に常に代入されます。html_errors
bool有効にすると、エラーメッセージにHTMLタグが含まれるようになります。 HTML形式のエラーメッセージでは、ユーザーがエラーまたはエラーを発生した関数を説明するページ に導くようクリック可能なメッセージを出力します。これらのリファレ ンスは、docref_root およ び docref_extの設定に依存 します。
無効にすると、エラーメッセージは単なるプレーンテキストになります。
xmlrpc_errors
bool有効にすると、通常のエラー報告を無効にして XML-RPC 形式のエラーメッセージとします。
xmlrpc_error_number
intXML-RPC の faultCode 要素の値として使用します。
docref_root
string新しいエラーフォーマットはエラーやエラーの原因となった関数に関するマニュアル のページの情報を含んでいます。マニュアルのページによっては母国語でダウンロードが 可能であり、このiniディレクティブをマニュアルのローカルコピーのURLにセット することができます。 マニュアルのローカルコピーが
"/manual/"
でアクセスできるとすると、単にdocref_root=/manual/
とするだけです。 ローカルコピーのファイルの拡張子はdocref_ext=.html
で指定できます。拡張リファレンスを使用することもできます。例えばdocref_root=http://manual/en/
またはdocref_root="http://landonize.it/?how=url&theme=classic&filter=Landon&url=http%3A%2F%2Fwww.php.net%2F%22
が使用できます。ほとんどの場合 docref_root の値の最後を
"/"
にしようと思うでしょう。 しかし上の二つ目の例を見ではその必要はありません。docref_ext
stringdocref_rootを参照して下さ い。
注意:
docref_extの値はドット
"."
で始まる必要があります。error_prepend_string
stringエラーメッセージの前に出力する文字列。
error_append_string
stringエラーメッセージの後に出力する文字列。
error_log
stringスクリプトエラーが記録されるファイル名です。 ファイルはウェブサーバーユーザーで書き込めなければなりません。
syslog
が指定されると、エラーはファイルではなく システムロガーに送られます。これは Unix では syslog(3) であり Windows ではイベントログのことです。 syslog() も参照してください。 このディレクティブが設定されていない場合、エラーは SAPI エラーロガーに送信されます。これは、例えば Apache のエラーログ、 あるいは CLI ならstderr
になります。 error_log() も参照ください。syslog.facility
stringどの種類のプログラムがメッセージを記録するのかを指定します。 error_log が "syslog" の場合にだけ有効です。
syslog.filter
string記録されたメッセージをフィルタリングするフィルターの種類を指定します。 フィルターで許可された文字はそのまま記録されますが、許可されていない文字は
\x
で始まる十六進表記に変換して記録されます。 サポートするフィルターは次の三種類です。all
– すべての文字を許可するno-ctrl
– 制御文字以外のすべての文字を許可するascii
– 印刷可能な ASCII 文字およびNL
だけを許可する
error_log が "syslog" の場合にだけ有効です。
syslog.ident
stringすべての文字列の先頭に追加する識別用文字列を指定します。 error_log が "syslog" の場合にだけ有効です。