PHPエラー

WBOY
リリース: 2016-06-23 14:36:32
オリジナル
1369 人が閲覧しました

これらの関数の動作は、php.ini の設定の影響を受けます。

エラーとログの構成オプション 名前のデフォルトは変更ログです ignore_repeat_source"0"PHP_INI_ALL PHP 4 以降で利用可能。 3.0.report_memleaks"1 "PHP_INI_ALL PHP 4.3.0 以降で利用可能です。track_errors"0"PHP_INI_ALLhtml_error s" 1"PHP_INI_ALLPHP_INI_SYSTEM (PHP xmlrpc_errors"0"PHP_INI_SYSTEMPHP 4.1.0 以降で利用可能。xmlrpc_error_number"0" PHP_INI_ALL PHP 4.1.0 以降で利用可能docref_root ""PHP_INI_ALL PHP 4.3.0 以降で利用可能です。""NULLNULLNULLPHP_INI_* スタイルの詳細と定義については、「構成設定を設定できる場所」を参照してください。

これは、設定ディレクティブの簡単な説明です。

error_reporting integer

エラー報告のレベルを設定します。このパラメータには、バイナリ ビット フィールドを表す任意の整数、または定数名を指定できます。エラーレベルと定数は事前定義定数で定義されており、php.ini には特別な指示もあります。プログラムの実行中に、error_reporting() 関数を通じて設定することもできます。詳細については、display_errors を参照してください。

PHP 4 および PHP 5 では、デフォルト値は E_ALL & ~E_NOTICE です。 この設定は、E_NOTICE を除いて表示されるエラー レベルを示します。開発時に表示する必要があります。

注:

開発段階で E_NOTICE を有効にすることにはいくつかの利点があります。デバッグ目的: 通知メッセージは、コード内のバグの可能性を警告します。たとえば、事前に割り当てられて定義されていない値を使用すると、警告が表示されます。これはタイプミスを見つけるのに役立ち、デバッグの時間を節約できます。通知メッセージでは、より適切なコーディング スタイルを使用するよう警告することもあります。たとえば、PHP は「item」を定数として処理しようとするため、$arr[item] は $arr['item'] と記述する方が適切です。定数でない場合、PHP はそれを配列の文字列インデックスとして扱います。

注:

PHP 5 では、新しいエラー レベル E_STRICT が提供されます。 E_STRICT は E_ALL に含まれていないため、このカテゴリのエラー メッセージを表示するには、E_STRICT を明示的に有効にする必要があります。開発中に E_STRICT を有効にすることにはいくつかの利点があります。厳密な情報は、推奨される最新の方法を使用してコードを作成するのに役立ちます。たとえば、非推奨になる関数の使用について警告します。

注: PHP の外部での PHP 定数

PHP の外部で PHP 定数を使用することは無意味です。たとえば、httpd.conf では、代わりに定数に対応する整数値を使用する必要があります。時間の経過と PHP の進化により、より多くのエラー レベルが追加されるため、最大エラー レベル (E_ALL) が変更される可能性があります。したがって、整数値に対応するために E_ALL が使用される場合は、使用する必要がある現在および将来のバイナリ ビット フィールドをカバーするために、値 2147483647 などのより大きな値を使用することを検討する必要があります (これには、E_ALL だけでなくすべてのエラーが含まれます)。 ).

display_errors string

このオプションは、エラー メッセージを出力の一部として画面に表示するか、表示せずにユーザーに対して非表示にするかを設定します。

「stderr」を設定すると、stdout ではなく stderr に送信されます。 「stderr」は、PHP 5.2.4 以降で利用可能です。以前のバージョンでは、この構成値のタイプはブール型でした。

注:

これは開発支援機能であり、運用システムでは決して使用しないことをお勧めします (たとえば、システムは外部情報を提供するためにインターネットに接続されています)サービス)。

注:

display_errors は実行時に (ini_set() を使用して) 設定することもできますが、スクリプトで致命的なエラーが発生すると、実行時の設定は無効になります。 この場合、期待された操作が実行されないためです。

display_startup_errors boolean

display_errors が on に設定されていても、PHP 起動時のエラー メッセージは表示されません。デバッグ目的を除き、display_startup_errors をオフに設定することを強くお勧めします。

log_errors boolean

実行中のスクリプトのエラー情報をサーバーエラーログまたはerror_logに記録するかどうかを設定します。これはサーバー固有の構成項目であることに注意してください。

注:

運用システムでは、Web サイトに表示されるエラー メッセージを記録するためにエラー ログを使用することを強くお勧めします。

log_errors_max_len integer

error_log に追加される log_errors の最大バイト数を設定します。デフォルト値は 1024 です。0 に設定すると、長さに制限はありません。この長さの設定は、ログに記録されるエラー、表示されるエラー、および $php_errormsg に制限的な影響を与えます。

integer を使用する場合、その値はバイト単位で測定されます。 FAQ に記載されている短縮表記を使用することもできます。 ignore_repeat_errors boolean

繰り返される情報を記録しません。 ignore_repeat_source が true に設定されていない限り、エラーが繰り返される場合は、同じファイル内のコードの同じ行で発生する必要があります。

ignore_repeat_source boolean

繰り返されるメッセージを無視する場合、メッセージのソースも無視されます。この設定がオンの場合、重複メッセージは、別のファイルまたは別のソース コード行によって生成されたかどうかを記録しません。

report_memleaks boolean

このパラメータが Off に設定されている場合、メモリ リーク情報は (標準出力またはログに) 表示されません。このチームのデバッグとコンパイルは効果的であり、error_reporting が機能するには E_WARNING が含まれている必要があります

track_errors boolean

オンにすると、最後のエラーが常に変数 $php_errormsg に存在します。

html_errors boolean

エラー メッセージ内の HTML タグを閉じます。この新しい HTML 形式のエラー メッセージはクリック可能で、エラーまたはエラーの原因となった機能を説明するリファレンス ページにユーザーを誘導します。 これらの参照は、docref_root および docref_ext の設定に関連しています。

xmlrpc_errors boolean

通常のエラー レポートをオフにし、エラーを XML-RPC エラー メッセージの形式にフォーマットします。

xmlrpc_error_number integer

XML-RPC fastCode 要素の値として使用されます。

docref_root 文字列

新しいエラー メッセージ形式には、エラーの詳細を説明する、またはエラーの原因となった関数を説明する、対応するリファレンス ページが含まれています。マニュアルページを提供するには、PHP 公式サイトから対応する言語のマニュアルをダウンロードし、ini 内の URL をローカルの対応するアドレスに設定します。 「/manual/」を使用してマニュアルのローカル コピーにアクセスできる場合は、単に docref_root=/manual/ を設定するだけで済みます。さらに、ローカル ファイル docref_ext=.html のサフィックスと一致するように docref_ext を設定する必要もあります。もちろん、外部参照アドレスを設定することもできます。たとえば、 docref_root=http://manual/en/ または docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon &url=http%3A%2F%2Fwww.php.net%2F" と設定できます。 "

通常、docref_root は「/」で終わる必要がありますが、上記の 2 番目の例ではその必要はありません。

注:

これにより、関数の説明をすばやく見つけて表示できるため、開発に非常に役立ちます。運用システムでは決して使用しないことをお勧めします (たとえば、システムが外部サービスを提供するためにインターネットに接続されているなど)。

docref_ext 文字列

docref_root を参照してください。

注:

docref_ext の値は「.」で始まる必要があります。

error_prepend_string 文字列

エラー メッセージの前に出力される内容。

error_append_string string

エラーメッセージの後に出力される内容。

error_log string

スクリプトエラーが記録されるファイルを設定します。このファイルは、Web サーバー ユーザーが書き込み可能である必要があります。特別な値 syslog が設定されている場合、エラー メッセージがシステム ロガーに送信されます。 Unix および同様のシステムでは syslog(3) が使用され、Windows NT のようなシステムではイベント ログが使用されます。システム ログは Windows 95 ではサポートされていません。参照: syslog()。この設定が設定されていない場合、エラー メッセージが SAPI エラー ロガーに送信されます。たとえば、Apache のエラー ログに表示されたり、CLI の stderr に送信されたりします。



リソース タイプ インストール[編集] 最終更新日: 2012 年 2 月 24 日金曜日

メモを追加 ユーザー投稿メモ ランタイム設定

nospam dot com のブブ 11-Jul- 2011 02:06

error_reporting(); を呼び出す前に session_start() を呼び出さないでください

// は正しく動作しません
error_reporting(NULL);

// は動作します
error_reporting( NULL) );

?> 標準エラー ストリーム)、これは CLI で PHP を使用している場合に問題になる可能性があります。 display_errors','On');

ini_set ('error_log','my_file.log');

ini_set('error_log',''); i);

ini_set('error_log', '/dev/null'); #linux foreach(1 as $i)?>

php -f test.php

は次のように出力されます。
警告: /test.php の 7 行目で foreach() に指定された引数が無効です # stdout
PHP 警告: /test.php の 10 行目で foreach() に指定された引数が無効です # stderr
警告: foreach( に指定された引数が無効です) /test.php の 10 行目 # stdout
警告: /test.php の 13 行目で foreach() に指定された引数が無効です # stdout
?>

stdout (標準出力ストリーム) に表示されるエラーが捕捉されます出力バッファリング関数 (ob_start/ob_get_clean) を使用すると、strerrr はできません。

plonk at xonx dot de 12-Jan-2011 11:46

Apache mod_fcgid および "log_errors = On" で PHP を使用すると、PHP エラーが重大度 "warn" で Apache ErrorLog ファイルに記録されます。 PHP エラー自体の重大度に関係なく、Apache ログの重大度は「警告」です。
PHP エラーを Apache ログに記録するには、次を使用します:
LogLevel warn
(または debug、info、notice)

alvaro at Demongracia dot com 26-Nov-2010 03:16

Apache ディレクティブ「php_value」内値を省略することはできず、空の文字列は許可されません:

#WRONG
php_value error_log
php_value error_log ""

そのような場合は、「none」を使用できます。これは、「値が割り当てられていない」ことを意味する PHP の特別なキーワードです:

#OK: empty string
php_value error_log none

hatchike at gmail dot com 23-Jul-2009 11:42

回避したい場合未定義のメソッド呼び出しが失敗したときに致命的なエラーが発生した場合は、次のような単純な例外スローワーを追加できます:
class MyClass
{
// ...通常のコードの多くを追加してから、次のようにします:
public function __call($ name, $args)
{
throw new Exception('未定義のメソッド ' . $name . '() が呼び出されました');
}
}
?>
これは、トップレベルのコードが

ブロックし、以前は致命的だったエラーをキャッチします。

ivanmaz at yandex dot ru 02-Apr-2009 11:44

もっと簡単で正しい解決策があります - ファイル .htaccess を使用し、次の行を追加するだけです:

php_value display_errors 1
php_value display_startup_errors 1

cjakeman at bcs dot org 17-Mar-2009 01:06

の使用
  スクリプトの先頭にある
は解析エラーをキャッチしません。 「)」または「;」が欠落しています。それでも空白のページが表示されます。 

これは、スクリプト全体が実行される前に解析されるためです。 php.ini を変更して

display_errors をオン
に設定できない場合は、error_reporting で考えられる解決策が提案されています。

error_reporting(E_ALL); 
ini_set("display_errors", 1); 
include("file_with_errors.php"); 
?>

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 PHP 4.3.0 以降で利用可能。
ignore_repeat_errors "0" PHP_INI_ALL PHP 4.3.0 以降で利用可能。
docref_ext
PHP_INI_ALL PHP 4.3.2 以降で利用可能です。 error_prepend_string
PHP_INI_ALL error_append_string
PHP_INI_ALL error_log
PHP_INI_ALL
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート