PHPのエラーログ対応

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

PHPでプログラムを作った時に、そのままWEBで公開する前に、必ずerror_logファイルをチェックしておきましょう。
 

僕は、この工程を忘れてしまって、何度も痛い目に合っています。
 

自分のコーディングしたプログラムはエラーが絶対に無いと断言できるプログラマーなど有り得ない為、自分への確認の意味も込めて、この工程は欠かさないようにしています。
 

今回は、少し苦しめられた下記2つのエラーについて、原因と対処した方法を書いておきますが、コーディング手段によって、原因も対処方法も様々あると思います。
 

今回の記事で、原因特定や対処による工数削減になれば幸いです。
 

in_array() expects parameter
PHP message: PHP Notice: Undefined variable

in_array関数による「expects parameter」エラー

in_array関数は、特定配列内に値が存在するかどうか確認する便利関数なんですが、検索する対象の配列がちゃんと配列型になっていないと、このエラーが発生するようです。
 

もちろん、ちゃんと値を操作する毎に型を意識して、記述できていれば、こんなエラーは現れないんですが、今回は、loop分の中で、一度発生したkey値を二度目は処理しないようにしたいために、その場で配列を作っていきながら行うプログラムでした。
 

こうした配列が動的な場合、初回の配列セットや、意図しない型になってしまうリスクがある場合、このエラーが発生します。
 

対応としては、下記のような対策をとりました。
 

gettypeでちゃんと型の確認をするだけなんですね。
 

いちいち書くのはめんどくさいので、処理効率のいいタイミングでまとめて行うのがいいです。

PHP message: PHP Notice: Undefined variable

このログは、しょっちゅう見るな〜と思っていたら、以下のような場合に発生していました。
 

 

この関数では、for分の1回目では、$strが定義されていないのに、”.=”として追記文が書かれていて、ここでエラーログが発生します。
 

この対応は、for文の前に、「$str = “”;」として、変数を宣言してあげる事でエラーが無くなりました。
 

長年プログラムを書いていても、こうしたエラーログって出してしまいますね。
 

プログラマーの品質

そして、体調が悪い時などは、これの解決に数時間かかってしまったりもします。
 

WEB言語は、型宣言が緩いものが多く、こうしたエラーは、php.iniなどで、warningレベルのものとして、ログ出力すら無くしてしまう対応をしているサイトもありますが、それでは何も解決になっていません。
 

改めて、プログラマーの品質として、エラーログを出さないというクオリティを考えた方がいいでしょうね。
 

え?当たり前!?こんな緩い自分の身を引き締まるエラーログでした。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です