Moodle

check_dir_exists() recursive does not work on windows

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Critical Critical
  • Resolution: Fixed
  • Affects Version/s: 1.8.6, 1.9.2
  • Fix Version/s: 1.8.7, 1.9.3
  • Component/s: Libraries
  • Labels:
    None
  • Environment:
    Windows XP Pro V3 with NTFS file system
  • Affected Branches:
    MOODLE_18_STABLE, MOODLE_19_STABLE
  • Fixed Branches:
    MOODLE_18_STABLE, MOODLE_19_STABLE

Description

We recently ran into a problem with check_dir_exists() and having it recursively create directories on Windows. Example call:

$CFG->dataroot = 'C:\xampp/moodledata';
check_dir_exists('C:\xampp/moodledata/path/to/dir', true, true);

What is passed to mkdir:

C:\xampp/moodledata/C:/
C:\xampp/moodledata/C:/xampp/
C:\xampp/moodledata/C:/xampp/moodledata/
C:\xampp/moodledata/C:/xampp/moodledata/path/
C:\xampp/moodledata/C:/xampp/moodledata/path/to/
C:\xampp/moodledata/C:/xampp/moodledata/path/to/dir/

Now, same call with the attached patch:

C:\xampp/moodledata/path/
C:\xampp/moodledata/path/to/
C:\xampp/moodledata/path/to/dir/

Since this method is called everywhere, I don't see how this problem hasn't come up before, which leads me to believe that I'm missing something. I did not experience the problem first hand as I develop on a Mac but as you can see from my simple test above, it is not working as intended.

Activity

Hide
Nicolas Connault added a comment -

I just tested on a windows machine without being able to reproduce the error. My specs are

  • Windows Vista Family Premium
  • PHP 5.2.5
  • Apache 2.2.6
  • MySQL 50.051b
  • Latest HEAD code
Show
Nicolas Connault added a comment - I just tested on a windows machine without being able to reproduce the error. My specs are
  • Windows Vista Family Premium
  • PHP 5.2.5
  • Apache 2.2.6
  • MySQL 50.051b
  • Latest HEAD code
Hide
Mark Nielsen added a comment -

HEAD uses PHP5's new recursive option to mkdir(). So, the code is radically different from 1.9 and before.

Show
Mark Nielsen added a comment - HEAD uses PHP5's new recursive option to mkdir(). So, the code is radically different from 1.9 and before.
Hide
Nicolas Connault added a comment -

Sorry, I only just realised the version number for this bug... Testing with 1.9 now

Show
Nicolas Connault added a comment - Sorry, I only just realised the version number for this bug... Testing with 1.9 now
Hide
Nicolas Connault added a comment -

Applied patch to 1.8 and 1.9. Works nicely now, thanks for the report and patch.

Show
Nicolas Connault added a comment - Applied patch to 1.8 and 1.9. Works nicely now, thanks for the report and patch.
Hide
Mark Nielsen added a comment -

Thanks for the work so far, but it looks like the patch wasn't applied to the MOODLE_19_STABLE branch.

Show
Mark Nielsen added a comment - Thanks for the work so far, but it looks like the patch wasn't applied to the MOODLE_19_STABLE branch.
Hide
Petr Škoda (skodak) added a comment -

verified, closing
thanks

Show
Petr Škoda (skodak) added a comment - verified, closing thanks

People

Vote (0)
Watch (1)

Dates

  • Created:
    Updated:
    Resolved: