コード例 #1
0
 /**
  * Determine if the cache folder is writeable
  * 
  * @param string $folder The folder or NULL to use the static property CacheFolder (default: NULL)
  * @return boolean Writeable?
  */
 public static function IsCacheFolderWriteAble($folder = null)
 {
     if (!is_null(self::$CacheFolderWriteAble)) {
         return self::$CacheFolderWriteAble;
     }
     if (is_null($folder)) {
         $folder = self::$CacheFolder;
     }
     if (is_null($folder)) {
         self::$CacheFolderWriteAble = false;
         return false;
     }
     if (!is_dir($folder)) {
         self::Debug('Invalid cache folder (not a directory?)');
         self::$CacheFolderWriteAble = false;
         return;
     }
     $file = uniqid();
     while (file_exists($folder . '/' . $file)) {
         $file = uniqid();
     }
     $file = $folder . '/' . $file;
     $temp = uniqid();
     if (file_put_contents($file, $temp) === false) {
         self::$CacheFolderWriteAble = false;
         return false;
     }
     $res = file_get_contents($file) === $temp;
     unlink($file);
     self::$CacheFolderWriteAble = $res;
     return $res;
 }