画面にエラーが表示され無いように display_errors を設定する

PHPでのアプリの開発って、このところずっとフレームワークを使ってたので忘れてしまってた。XOOPSも、Drupalも管理画面で変更できるし。Mojavi も cakephp も設定ファイルで変更できる。

しっかり本番環境で、Warning Illegal offset type in xxxx などとエラーメッセージが表示されてしまっていた。
関係者の皆様申し訳ございません。確認不足でした。

本番環境では PHPの設定(php.ini等)で、display_errorsOff にしたほうがよい。こうすることで、エラーメッセージを画面に表示しなくなる。画面にエラーメッセージが表示されると、エラーメッセージからセキュリティホールを見つけられる危険があるから。ついでに、画面に表示せずにログファイルに出力するには、log_errorsOnにしておく。これは、対で覚えておいた方がよい。

今回の場合は、たまたま問題の起こりそうに無いメッセージだったが、お客様からご指摘頂くような失態。

PHPのサイトで display_errors の説明を調べてみると、PHPのバージョン 5.2.4 から変更になっている様子。


"stderr" を指定すると、エラーの内容を stdout (標準出力) ではなく stderr (標準エラー出力) に送ります。この値は PHP 5.2.4 以降で使用可能です。それより前のバージョンでは、 このディレクティブは boolean 型でした。


ということは、stderr と書いておくとログファイルにエラーメッセージが書かれるのだろうか。後ほど調べてみる。

新しいコメントの投稿

このフィールドの内容は非公開にされ、公表されることはありません。
  • HTMLタグは使用できません
  • 行と段落は自動的に折り返されます。

書式オプションに関するより詳しい情報...