[PHP-users 28165] Re: checkdate() でエラーが発生する場合としない場合

Keiji Watanabe watanabe @ help-js.com
2006年 1月 19日 (木) 13:57:23 JST


渡邉です。

>       そもそも PHP 4.0.6 に $_REQUEST はなかったと思います.
>
あ、すみません。ソースをいじっています。
実際はこんなソースです。

if (checkdate($kaisai_m,$kaisai_d,$kaisai_y)==false){

--------------------------------------------------
> var_dump( ini_get( "error_reporting"));
> var_dump( ini_get( "display_errors"));
> checkdate($_REQUEST["m"], $_REQUEST["d"], $_REQUEST["y"])
>
>     とか位はしてみてもいいんじゃないでしょうか?

var_dump( ini_get( "error_reporting"));
var_dump( ini_get( "display_errors"));
checkdate(a, null, null);

としてみました。

string(4) "2039" string(1) "1"
Warning: checkdate() expects parameter 1 to be long, string given in
/export/home/com/www2/information/test.php on line 4

どちらのサーバもerror_reporting, display_errorsの値は同じなのですが、
片方でのみcheckdateの警告が表示されてしまいます。

これが本来の状態だと思うのですが、"なぜ" 片方のサーバでは表示されない
のかが不思議なんです...

--------------------------------------------------
ちなみに、警告が表示されないサーバでも
checkdate(a, null, null, a);
のようにわざと引数を間違えると
Warning: Wrong parameter count for checkdate() in
/home/life-emotion/life-emotion/demo/html/parknet/V1/information/test.php on
line 4

となるので、設定ではなく、checkdate()の仕様なのではないか、という
気がしてきました。

とりあえずは該当個所のソースを修正して、checkdateの前に数値チェックを
行うようにしたのですが、原因不明で少し気持ち悪いです。
他になにか情報があればよろしくお願いします。



PHP-users メーリングリストの案内