Search code examples
phppermissionscentoschmodmkdir

Permission denied in PHP


My script generates a directory for photos that user uploads but permissions for that generated directory shows as r----x--t even though i specify 777 in php

if (!is_dir($dir.$new_id)) {
    $new_dir = $dir.$new_id.'/';
    mkdir($new_dir, 777, true);
    $thumbnail_dir = $new_dir.'thumbnail/';
    if (!is_dir($thumbnail_dir)) {
        mkdir($thumbnail_dir, 777, true);   
    }
}

I should mention that i'm on hostinger free account that is running centos OS.


Solution

  • set your umask temporarily to zero, the umask acts as a set of permissions that applications cannot set on files. Source : http://php.net/manual/en/function.umask.php

      $old = umask(0);
      if (!is_dir($dir.$new_id)) {
          $new_dir = $dir.$new_id.'/';
          mkdir($new_dir, 0777, true);
          $thumbnail_dir = $new_dir.'thumbnail/';
          if (!is_dir($thumbnail_dir)) {
              mkdir($thumbnail_dir, 0777, true);   
          }
      }
      umask($old);
      if ($old != umask()) {
         die('An error occurred while changing back the umask');
      }