PHPでエラーが表示できなくなったときの話
こんにちは。
11月に入り北海道は益々寒くなってきました。10月20日には札幌で初雪も観測され、16年ぶりに早い記録だったみたいです。もうこのまま冬に突入して今年も終わってしまうのでしょうね。本当に1年ってあっという間ですね。寒いのは嫌ですけど早くボードはしたい斉藤です。ラーメン食べたい。コーンスープ飲みたい。
そんなこんなでタイトルにあるようにPHPでエラーが表示できなくなって困ったときの話をします。
先に言っておきますけどなんともしょうもないことで引っかかってました。いつもしょうもなくてすみません。
apacheのvhostのconfで
php_value error_reporting E_ALL & ~E_DEPRECATED
と設定していました。
php_flag display_errors on
にしてるのにエラー出たときディスプレイにも表示されないし、ログにも書かれないし、ただ画面が真っ白になるだけで一体全体なんなんだろうと思っていました。
もうここまででお気づきなられてる方も多いと思いますが、そうです。その通りです。
apache側でやる場合はマスク値使わなあかんやろ。
上記URLの、「将来の バージョンとの互換性を保証するために、名前つき定数の使用が 強く推奨されています。」を素直でピュアな私はそのまま受け止めてしまいました。はい、おバカです。
上記URLにはしっかりと、「注意:以下の定数をphp.iniで使用することができますが、 httpd.confのようなPHPの外部では、 代わりにビットマスク値を使用する必要があります。」書いてあります。
E_ALL:32767
E_DEPRECATED:8192
引き算して
php_value error_reporting 24575
これで表示もログもOKです。
phpのバージョンによってマスク値は変わるのでapacheでやる場合はここだけはほんと注意しなきゃなって感じでした!
まとめると、php.iniでやる場合は名前付き、apacheの場合はマスク値で。ただただこれだけのことでした。おっしまい!
この記事が参考になった、
面白かったという方は
ボタンを押してください。