|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2003-09-19 21:38 UTC] iliaa@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Oct 30 21:00:01 2025 UTC |
Description: ------------ This BUG is Windows releated. PHP thinks what filepathes started form one slash are relative. The problem comes from IS_ABSOLUTE_PATH definw which is defined in file "TSRM/tsrm_virtual_cwd.h" line 64. The original source is #define IS_ABSOLUTE_PATH(path, len) \ (len >= 2 && ((isalpha(path[0]) && path[1] == ':') || (IS_SLASH(path[0]) && IS_SLASH(path[1])))) but I think it must be changed to #define IS_ABSOLUTE_PATH(path, len) \ ((len >= 2 && isalpha(path[0]) && path[1] == ':') || \ (len >= 1 && IS_SLASH(path[0]) && IS_SLASH(path[1]))) I demonstrate the BUG of the glob() function, but it can occur in any place where IS_ABSOLUTE_PATH is used. Reproduce code: --------------- <?php function remove_drive($file) { return substr($file,2); } if (substr(PHP_OS,0,3) == WIN) { $drive = substr(getcwd(),0,2); $a1 = glob("/*"); $a2 = array_map("remove_drive",glob($drive."/*")); if ($a1==$a2) { echo "ok"; } else { echo "fail"; } } else { echo "ok"; } ?> Expected result: ---------------- ok Actual result: -------------- fail