mktime 関数の利用で Warning 発生

PHP で作られている某社の Web サイトを、うちの古いサーバから新しいサーバに移動したのだが、そしたらデータの登録画面で

Warning: mktime() expects parameter 1 to be long, string given in ~

なんつう Warning が発生し始めた。

ま、Warning なので、そのまま処理は進んでいるようなのだが、どうもデータ的にはボロボロになっているようで、本来表示されるべき場所にデータが表示されない。でも、同じデータをもう一度登録しようとすると「既に登録されています」のエラーになる。
日付が正しく入ってないので、検索条件からこぼれてるんだろうなあ。
(他人が作ったソースを追っかけるのは面倒くさかったので、DB の中身は確認してないけど。)

日頃 PHP を追っかけてないのでよくわからないのだが、ググってみると、どうも mktime の仕様が途中で変わり、パラメータの空値を許さなくなったためのようだ。

確かにソースの該当箇所を見てみると、

$date = mktime($hh,$mm,00,$month,$day,$year);

となってるんだけど、ソース中を調べても $hh には何の値もセットされていない。空値が渡されている。ここを試しに

$date = mktime(00,$mm,00,$month,$day,$year);

とかすると Warning は出なくなるので、やはり空値が問題のようだ。

PHP のバージョンは、古いサーバが 5.0.5、新しいサーバが 5.2.6。どうも、5.1.0 辺りで結構関数の仕様変更があったようなので(あくまで「ようなので」ですが(^^;)、やっぱその影響かなあ。

つーことで、この PHP プログラムを作成した会社に、お客さん経由で「新しい PHP のバージョンに対応した修正を行ってくれ」と依頼したんだが拒絶されたらしい。(^^;
おいおい・・・(^^;

旧サーバはあと2週間くらいで停止させるので、うちの方で直すしかないか・・・
やれやれ・・・(^^;

取りあえず、第一引数が空値なら date(H) をセット。第二引数が空値なら date(i) をセット・・・みたいに直してみればいいかな。

今、ざっと grep してみたら、mktime を使ってて、尚かつ引数に空値をセットしそうなソースが 11本あった。

他人が書いた PHP ソースを 11本も見るのは疲れるのお・・・(^^;

トラックバック(0)

このブログ記事を参照しているブログ一覧: mktime 関数の利用で Warning 発生

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/771

コメントする

このブログ記事について

このページは、shinodaが2009年9月15日 06:54に書いたブログ記事です。

ひとつ前のブログ記事は「やっと梅干しを手に入れて一安心なのである」です。

次のブログ記事は「スエヒロで初めての「背脂多め」」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら