ID: 38579 Updated by: [EMAIL PROTECTED] Reported By: frank at procurios dot nl -Status: Closed +Status: Assigned Bug Type: Scripting Engine problem Operating System: Windows PHP Version: 5.1.5 -Assigned To: +Assigned To: dmitry New Comment:
The problem is not in slashes, but in case-sensitivity. The patch doesn't fix anything. I reverted it. Previous Comments: ------------------------------------------------------------------------ [2006-09-05 15:52:48] [EMAIL PROTECTED] This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. ------------------------------------------------------------------------ [2006-08-30 12:29:37] taco at procurios dot nl I'm experiencing this bug too. Besides the slashes also differences in drive letter case seem to interfere with the require_once cache: requiring the path C:/path/file.php in the __autoload function will not prevent the file c:/path/file.php from being required a second time using require_once. ------------------------------------------------------------------------ [2006-08-24 10:30:50] frank at procurios dot nl For sake of clarity, a minor typo needs to be corrected: // Some function that doesn't resolves paths Should be // Some function that doesn't do anything but resolve paths ------------------------------------------------------------------------ [2006-08-24 10:27:32] frank at procurios dot nl Description: ------------ When including a file, require_once() will make a destinction between path/file strings containing forward slashes and backslashes. Reproduce code: --------------- (example) function __autoload($className){ $basePath = 'C:/htdocs'; $classPath= $basePath . '/classes'; require_once($classPath . "/$className.class.php"); } // Some function that doesn't resolves paths function getPath($file){ $path = realpath('./$file'); return $path; } // Autoload $A = new Foo; // Explicit require of class require_once(getPath(Foo.class.php)); $B = new Foo; Expected result: ---------------- One would expect the require_once to notice that Foo has already been loaded and not include the file a second time. Actual result: -------------- Fatal error: Cannot redeclare class foo in c:\htdocs\classes\Foo.class.php on line n (or something like that) Whatever the actual result, the file is loaded twice, as the slashes produced by realpath are distinguished from the slashes used in the defined __autoload() function. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=38579&edit=1