Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-16556

check_dir_exists() recursive does not work on windows

    Details

    • Type: Bug
    • Status: Closed
    • Priority: 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.

        Gliffy Diagrams

          Attachments

            Activity

            Hide
            nicolasconnault 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
            nicolasconnault 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
            bushido 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
            bushido 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
            nicolasconnault Nicolas Connault added a comment -

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

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

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

            Show
            nicolasconnault Nicolas Connault added a comment - Applied patch to 1.8 and 1.9. Works nicely now, thanks for the report and patch.
            Hide
            bushido 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
            bushido 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
            skodak Petr Skoda added a comment -

            verified, closing
            thanks

            Show
            skodak Petr Skoda added a comment - verified, closing thanks

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:
                  Fix Release Date:
                  15/Oct/08