ID: 27442 User updated by: kim at openphp dot cn Reported By: kim at openphp dot cn Status: Bogus Bug Type: Unknown/Other Function Operating System: Windows Server 2003 PHP Version: 4.3.4 New Comment:
Oh~My God ! Look At These two Pictures : http://www.openphp.cn/zero.gif http://www.openphp.cn/zero2.gif I don't know how to use CMD ....:) Previous Comments: ------------------------------------------------------------------------ [2004-03-02 05:21:41] [EMAIL PROTECTED] [EMAIL PROTECTED]:~$ php-4.3.5RC3 -n -derror_reporting=2047 -r '$value = @ (2/0);'; [EMAIL PROTECTED]:~$ php-5.0dev -n -derror_reporting=2047 -r '$value = @ (2/0);'; [EMAIL PROTECTED]:~$ no output... ------------------------------------------------------------------------ [2004-03-02 05:10:44] kim at openphp dot cn Sorry . My English is not good :( But , <?php $value = @ (2/0); ?> On PHP4.3.4(or higher) , the output is : Warning: Division by zero in Unknown on line 0 Not: This also has nothing to do with your earlier example: <?php echo @ (2/0); ?> shows no output at all on php 4.3.2, 4.3.3,4.3.5rc1 and 5.0dev ------------------------------------------------------------------------ [2004-03-02 04:45:41] [EMAIL PROTECTED] This is not a bug, check_date() gives an E_WARNING error since PHP 4.3.4 in case the parameter passed is not an integer. Because you explode on a string, the first ($year) will contain the string and both $month and $day will contain NULL, which are automatically converted to '0', but the empty string for $year isn't. This also has nothing to do with your earlier example: <?php echo @ (2/0); ?> shows no output at all on php 4.3.2, 4.3.3, 4.3.5rc1 and 5.0dev ------------------------------------------------------------------------ [2004-03-02 04:09:14] kim at openphp dot cn emm.....the logs is: checkdate() expects parameter 3 to be long, string given (PHP 4.3.4 or higher / Apache2.0.48 / Windows Server 2003) ------------------------------------------------------------------------ [2004-03-02 03:46:35] kim at openphp dot cn The same ....... I thank it is different between 4.3.4(or higher) and 4.3.3 . Or it is different between IIS and Apache . I haven't tested On IIS/php4.3.4 , but I tested the code on IIS/4.3.3 , everything is OK. The Error process have something wrong : ------------------------------------------- <? error_reporting( E_ALL ^ E_NOTICE ); // ÉèÖþ¯¸æ¼¶±ð function myErrorHandler ($errno, $errstr, $errfile, $errline) { switch ($errno) { case E_USER_NOTICE: case E_USER_WARNING: case E_NOTICE: case E_CORE_WARNING: case E_CORE_ERROR: case E_COMPILE_WARNING: break; default: die("here"); } } $old_error_handler = set_error_handler("myErrorHandler"); // mysql_connect ("localhost", "username", "secret"); $ubirth=""; $arr=explode("-", $ubirth); print_r($arr); list($year, $month, $day) = explode("-", $ubirth); echo checkdate($month, $day, $year); echo checkdate(1, 1, 1); exit; ?> --------------------------------------- On IIS5/PHP4.3.3 everything is OK . Output is "Array ( [0] => ) 1" On Apache2/PHP4.3.4(4.3.5RC4-dev) . Output is "Array ( [0] => ) here". I don't know why it is different . but it makes me puzzle . ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/27442 -- Edit this bug report at http://bugs.php.net/?id=27442&edit=1