人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

わたしはPHPの勉強をしているのですが、ひとつ困ったことがあります。
それは、error_reporting( エラーレベル )の設定です。
デフォルトでは、E_NOTICE 以外の全てのエラーを表示する「error_reporting( E_ALL ^ E_NOTICE );」となっているのですが、

つい最近、全てのエラー情報を出力する
「error_reporting( E_ALL ^ E_NOTICE );」
があることを知りました

どちらがいいのでしょうか?
みなさんのエラーレベルの設定とそうしている理由を教えて下さい。
お願いします。
ちなみにわたしのPHPバージョンは5.3.6です

●質問者: ぱんたま
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● tdoi
●34ポイント ベストアンサー

新しく知ったのが、error_reporting(E_ALL); として回答します。

勉強中なら

error_reporting(E_ALL);

にしておくのがいいかと思います。

そうすることで、typoによる未定義変数の利用とかどうでもいいところではまる可能性が減りますし、何か問題が起きた時に問題の箇所を特定しやすいでしょうから。

僕自身は開発中は、

error_reporting(E_ALL);

にしておいて、リリース後は、

error_reporting(0);

とかにして置きます。

どうでもいいシステムなら放置の可能性もありますが、万が一なんらかのトラブルがあっても内部実装をなるべく隠せるようにしたいからですね。あとは、中途半端なエラーメッセージが出るよりも、真っ白とかになってくれた方が、色々と・・・。


ぱんたまさんのコメント
開発中と勉強中で設定を変えるんですね! ありがとうございます。勉強になりました!

2 ● うぃんど
●33ポイント

(1)エラーレポーティングのレベル

下記に記載があるとおり、実は結構多いです

http://www.php.net/manual/ja/errorfunc.constants.php

(2)設定方法

1.デフォルト設定

php.iniファイルに記述しておく

すべてのコードが一斉に従うので、

開発環境用と運用環境用の二種類を用意しておくだけで済む

2.関数で一時的に変更

error_reporting関数(もしくはini_set関数関数)

部分的にデバッグしたい場合などに利用すると便利

意外と多いのが消し忘れ

計画的に使わないとシステムの中身がバレる恐れあり

http://php.net/manual/ja/function.error-reporting.php

(3)出力先

1.ログファイル

ディスクアクセスが発生するため、

何でもかんでも出力するとパフォーマンス低下の大きな原因となる

当然のことですが実運用開始前にしっかりとデバッグを行い、

エラー出力されないようにしておくことが、ここでも重要

しかしながら、E_NOTICEはエラー以外の情報(すなわち

通常実行時にも出力されるものがある)ため、

実運用時には出力しないようにしておくのが定番

2.画面出力

運用開始後は画面出力なし

開発中は画面出力ありにしておくことのほうが多い

http://www.php.net/manual/ja/errorfunc.configuration.php#ini.display-errors

(4)よく見る設定

開発環境 E_ALL|E_STRICT(5.4からはE_ALLだけでOK)

運用環境 E_ALL ^ E_NOTICE(デフォルト)

http://www.php.net/manual/ja/errorfunc.configuration.php#ini.error-reporting

デフォルト設定はよく考えられているものだと関心するばかり・・・

どうして、そのようになっているのかを探っていくというのも、

スキルアップのコツかもしれませんね


ぱんたまさんのコメント
詳細まで教えていただきありがとうございます。 参考にさせていただきます。

3 ● munyaX
●33ポイント

よくある開発業務だと、

■開発環境

・詳細なエラー情報、デバッグ情報を出力。

・場合によっては実際の画面にも出す

■本番環境

・通常は最小限のエラー情報。

・ユーザーから見える画面には絶対に出さない

・何か障害が起こったら裏で仕込む

といったケースが多いですね。

環境によって切り替えます。


勉強中ということであれば、若干リソースを食いますがxdebugあたりも入れて

おくと捗りますよ。

http://keicode.com/cgi/introducing-xdebug.php

※本番環境へは入れてはダメです。


ぱんたまさんのコメント
ユーザーにはエラーを見えないようにするですか。 xdebugは使用しているのですが、本番には設定をオフにするよう心がけます。 ありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ