ID:               33224
 Updated by:       [EMAIL PROTECTED]
 Reported By:      ypae at hotmail dot com
-Status:           Open
+Status:           Feedback
-Bug Type:         Unknown/Other Function
+Bug Type:         Scripting Engine problem
 Operating System: Windows 2003 Server
 PHP Version:      5.0.4
 New Comment:

Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip




Previous Comments:
------------------------------------------------------------------------

[2005-06-02 17:16:47] ypae at hotmail dot com

Description:
------------
When I created a lib.inc.php that has a few functions defined (e.g.
getmicrocode(), myfunction()) and try to include it on several files
with require_once, it somehow included more than once even though the
end result of 'path/filename' is identical.

My understanding of require_once limitation on Windows (or non-POSIX)
platform was that if you have mixed case with the same file name, it
will be included again. Another words, as long as you have identical
"path/filename" as part of require_once statement, it should include
only once.

As a result, since you cannot redeclare the same function within the
page, you get:

Fatal error: Cannot redeclare "functionname()" (previously declared
in...



Reproduce code:
---------------
For example,

On lib.inc.php:
===============
myfunction1() 
{ echo "hello!";}

myfunction2() 
{ echo "hello again!";}

On index.php 
============
$_my_absolute_path = 'c:/inetpub/wwwroot/';

require_once($_my_absolute_path.'lib.inc.php');
require_once($_my_absolute_path.'template.inc.php');
   
on template.inc.php
===================
$_my_absolute_path = 'c:/inetpub/wwwroot/';

require_once($_my_absolute_path.'lib.inc.php'); // Just in case someone
didn't call this previously

The realistic code is quite complex: 
A require_once B and C
B require_once C and *D*
C require_once *D*

and *D* causes redeclare issue when I load A.


Expected result:
----------------
the second attempt to include lib.inc.php by using require_once should
be ignored because it was already loaded. 

The same code running on Linux works perfectly and it used to be fine
on PHP 4.3.10

But right after I rebuild the server with PHP 5.0.4, I got the
following error:

Fatal error: Cannot redeclare myfunction1() (previously declared in...



Actual result:
--------------
the second attempt to include lib.inc.php by using require_once WAS
performed and it causes error.



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=33224&edit=1

Reply via email to