Uploaded image for project: 'phpBB3'
  1. phpBB3
  2. PHPBB3-11511

phpbb_is_writable() fails on symlinks on Windows

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Minor
    • Resolution: Won't Fix
    • Affects Version/s: 3.0.11
    • Fix Version/s: 3.0.15-RC1, 3.1.12-RC1
    • Component/s: Other
    • Labels:
      None
    • Environment:
      Windows 7, PHP 5.3.21, PHP 5.4.12

      Description

      Path resolution for symlinks on Windows in phpbb_is_writable() ends up with a case difference on the drive letter which causes it to return false.

      The case difference is caused by realpath() returning a lowercase version while tempnam() returns one with an uppercase. This only happens with symlinks, using a normal directory results in both functions returning the path with an uppercase.

      In the example below, cache2 is symlinked to ./cache which is writable.

      tempnam('./cache2/', 'i_w'): c:\wamp\www\phpBB3\cache\i_wA8BE.tmp
      phpbb_realpath('./cache2/'): c:\wamp\www\phpBB3\cache
      realpath('./cache2/'): c:\wamp\www\phpBB3\cache
      tempnam(phpbb_realpath('./cache2/'), 'i_w'): C:\wamp\www\phpBB3\cache\i_wA8CE.tmp
      var_dump(phpbb_is_writable('./cache2/')): boolean false

      Non-symlinked:

      tempnam('./cache/', 'i_w'): C:\wamp\www\phpBB3\cache\i_w4557.tmp
      phpbb_realpath('./cache/'): C:\wamp\www\phpBB3\cache
      realpath('./cache/'): C:\wamp\www\phpBB3\cache
      tempnam(phpbb_realpath('./cache/'), 'i_w'): C:\wamp\www\phpBB3\cache\i_w4558.tmp
      var_dump(phpbb_is_writable('./cache/')): boolean true

        Attachments

          Activity

            People

            Assignee:
            CHItA CHItA
            Reporter:
            Noxwizard Noxwizard
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: