[PHP-users 28166] Re: checkdate() でエラーが発生する場合としない場合
Tadashi Jokagi
ml @ elf.no-ip.org
2006年 1月 19日 (木) 14:50:56 JST
ぢょ〜@よくきたなです.
checkdate って PHP の関数だったんですね.
Keiji Watanabeさんの「[PHP-users 28165] Re: checkdate() でエラーが発生する場合としない場合」から
>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
「第 1 引数に文字列渡されたけど long(整数)渡せ」と書いてますが読
めますか?
>どちらのサーバもerror_reporting, display_errorsの値は同じなのですが、
>片方でのみcheckdateの警告が表示されてしまいます。
>
>これが本来の状態だと思うのですが、"なぜ" 片方のサーバでは表示されない
>のかが不思議なんです...
そうなると話は非常に簡単で,それぞれのサーバーで PHP のバージョ
ンが違うからではないでしょうか? バージョンが違えば挙動が変わる,
特にエラーや警告関連の振る舞いのはあってしかるべきでしょう.
#簡単にいうと「値チェックが厳しくなっただけ」ではないでしょうか
とりあえず PHP 4.3.10/4.4.2 では checkdate() に下記のコードがあ
ります.
* ext)standard/datetime.c
>PHP_FUNCTION(checkdate)
>{
> long m, d, y;
>
> if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll", &m, &d, &y) == FAILURE) {
> RETURN_FALSE;
> }
ここで引数はすべて整数("lll")と書いあります.その後は追いかけてい
ませんが,少なくとも「checkdate(a, null, null);」に対しては実装通
りの処理かもしれません.
--
----.----1----.----2----.----3----.----4----.----5----.----6----.----7
Tadashi Jokagi/Shibuya city mailto:elf @ elf.no-ip.org
YokukitanaII http://elf.no-ip.org/
Yokukita blog http://blog.poyo.jp/
Yokukita wiki http://wiki.poyo.jp/
PHP-users メーリングリストの案内