From e4e603b1083242fd08fc84e2cb29e998dddaee0c Mon Sep 17 00:00:00 2001 From: Derek Allard Date: Wed, 9 Jan 2008 14:18:14 +0000 Subject: fix for is_really_writable --- system/helpers/file_helper.php | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'system/helpers') diff --git a/system/helpers/file_helper.php b/system/helpers/file_helper.php index d07d35f97..83ef6a066 100644 --- a/system/helpers/file_helper.php +++ b/system/helpers/file_helper.php @@ -176,4 +176,39 @@ function get_filenames($source_dir, $include_path = FALSE) } } +// -------------------------------------------------------------------- + +/** + * Tests for file writability + * + * is_writable() returns TRUE on Windows servers + * when you really can't write to the file + * as the OS reports to PHP as FALSE only if the + * read-only attribute is marked. Ugh? + * + * @access private + * @return void + */ +function is_really_writable($file) +{ + if (is_dir($file)) + { + $file = rtrim($file, '/').'/'.md5(rand(1,100)); + + if (($fp = @fopen($file, 'ab')) === FALSE) + { + return FALSE; + } + + @chmod($file, 0777); + @unlink($file); + } + elseif (($fp = @fopen($file, 'ab')) === FALSE) + { + return FALSE; + } + + fclose($fp); + return TRUE; +} ?> \ No newline at end of file -- cgit v1.2.3-24-g4f1b