예제 #1
0
 private static function _checkReadWrite($directory)
 {
     $directory .= '/';
     if (!is_dir($directory)) {
         echo sprintf('<tr class="fail"><td><strong>Directory %s does not exist or is not a directory.</strong></td></tr>', $directory);
         return false;
     }
     $octalPermissions = FileUtility::getOctalPermissions($directory);
     $proceed = true;
     /* Check for read. */
     if (is_readable($directory)) {
         echo sprintf('<tr class="pass"><td>Directory %s is readable (permissions: %s).</td></tr>', $directory, $octalPermissions);
     } else {
         echo sprintf('<tr class="fail"><td><strong>Directory %s is not readable (permissions: %s).</strong></td></tr>', $directory, $octalPermissions);
         $proceed = false;
     }
     /* Check for write. */
     if (is_writeable($directory)) {
         echo sprintf('<tr class="pass"><td>Directory %s is writeable (permissions: %s).</td></tr>', $directory, $octalPermissions);
     } else {
         echo sprintf('<tr class="fail"><td><strong>Directory %s is not writeable (permissions: %s).</strong></td></tr>', $directory, $octalPermissions);
         $proceed = false;
     }
     /* Test ACTUAL writeability by creating a file, not relying on is_writable()
      * as it sometimes returns a false positive.
      */
     if (FileUtility::isDirectoryWritable($directory)) {
         echo sprintf('<tr class="pass"><td>Creating a file within %s succeeded.</td></tr>', $directory);
     } else {
         echo sprintf('<tr class="fail"><td><strong>Creating a file within %s failed. Check your permissions.</strong></td></tr>', $directory);
         $proceed = false;
     }
     /* Check for create directory ability. */
     $testPath = $directory . 'testdir';
     if (is_dir($testPath)) {
         FileUtility::recursivelyRemoveDirectory($testPath);
     }
     if (@mkdir($testPath, 0777)) {
         echo sprintf('<tr class="pass"><td>Directories can be created inside %s/.</td></tr>', $directory);
     } else {
         echo sprintf('<tr class="fail"><td><strong>Directories cannot be created inside %s/.</strong></td></tr>', $directory);
         $proceed = false;
     }
     if (is_dir($testPath)) {
         FileUtility::recursivelyRemoveDirectory($testPath);
     }
     return $proceed;
 }