您的位置:首页 > 编程语言 > PHP开发

php 判断文件是否可写 ci is_really_writable()

2013-03-12 17:57 302 查看
PHP 中原生的 is_writable() 函数在 windows 系统中不能准确判断文件是否可写, 如果文件只是可读 is_writable() 也会返回 true, 无法达到真正的判断目的. 而如果是在 Unix 内核的系统中, 在配置文件 safe_mode 参数被设置为 on 时 is_writable() 函数也不奏效.为了避免这样的问题可以参考CodeIgniter中的is_really_writable函数(位于:system/core/common.php)

function is_really_writable($file)
{
// 在 Unix 内核系统中关闭了 safe_mode, 可以直接使用 is_writable()
if (DIRECTORY_SEPARATOR == '/' AND @ini_get("safe_mode") == FALSE)
{
return is_writable($file);
}

// 在 Windows 系统中打开了 safe_mode的情况
if (is_dir($file))
{
$file = rtrim($file, '/').'/'.md5(mt_rand(1,100).mt_rand(1,100));

if (($fp = @fopen($file, 'ab')) === FALSE)
{
return FALSE;
}

fclose($fp);
@chmod($file, 0777);
@unlink($file);
return TRUE;
}
elseif (($fp = @fopen($file, 'ab')) === FALSE)
{
return FALSE;
}

fclose($fp);
return TRUE;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: