わたしはPHPの勉強をしているのですが、ひとつ困ったことがあります。

それは、error_reporting( エラーレベル )の設定です。
デフォルトでは、E_NOTICE 以外の全てのエラーを表示する「error_reporting( E_ALL ^ E_NOTICE );」となっているのですが、

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

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/10/25 17:32:35
  • 終了:2011/11/01 17:35:03

ベストアンサー

id:tdoi No.1

tdoi回答回数174ベストアンサー獲得回数752011/10/25 19:20:03

ポイント34pt

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

勉強中なら

error_reporting(E_ALL);

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

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

僕自身は開発中は、

error_reporting(E_ALL);

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

error_reporting(0);

とかにして置きます。

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

id:kyouryukun

開発中と勉強中で設定を変えるんですね!

ありがとうございます。勉強になりました!

2011/10/30 02:18:05

その他の回答(2件)

id:tdoi No.1

tdoi回答回数174ベストアンサー獲得回数752011/10/25 19:20:03ここでベストアンサー

ポイント34pt

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

勉強中なら

error_reporting(E_ALL);

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

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

僕自身は開発中は、

error_reporting(E_ALL);

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

error_reporting(0);

とかにして置きます。

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

id:kyouryukun

開発中と勉強中で設定を変えるんですね!

ありがとうございます。勉強になりました!

2011/10/30 02:18:05
id:windofjuly No.2

うぃんど回答回数2625ベストアンサー獲得回数11492011/10/25 19:43:45

ポイント33pt

(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

 

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

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

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

id:kyouryukun

詳細まで教えていただきありがとうございます。

参考にさせていただきます。

2011/10/30 02:19:13
id:munyaX No.3

munyaX回答回数120ベストアンサー獲得回数242011/10/30 02:04:24

ポイント33pt

よくある開発業務だと、

■開発環境

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

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

■本番環境

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

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

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

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

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


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

おくと捗りますよ。

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

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

id:kyouryukun

ユーザーにはエラーを見えないようにするですか。

xdebugは使用しているのですが、本番には設定をオフにするよう心がけます。

ありがとうございました。

2011/10/30 02:22:08

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません