网站开发技术

记点笔记、 学点技术 欢迎交流建站技术。本站关注lamp技术

您尚未登录。

#1 2015-03-25 11:54:30

ci
会员

core/common.php -- is_really_writable

php 代码

if ( ! function_exists('is_really_writable'))
{
    function is_really_writable($file)
    {
        // If we're on a Unix server with safe_mode off we call is_writable
        // 如果是在 unix 并且 安全模式没有打开的情况下是可以 直接使用 php 提供的  is_writable($file);
        if (DIRECTORY_SEPARATOR == '/' AND @ini_get("safe_mode") == FALSE)
        {
            return is_writable($file);
        }

        // For windows servers and safe_mode "on" installations we'll actually
        // write a file then read it.  Bah...
        // 其他的情况就需要做个测试, 判读是否可以读写
        if (is_dir($file))
        {
            $file = rtrim($file, '/').'/'.md5(mt_rand(1,100).mt_rand(1,100));

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

            fclose($fp);
            @chmod($file, DIR_WRITE_MODE);
            @unlink($file);
            return TRUE;
        }
        elseif ( ! is_file($file) OR ($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE)
        {
            return FALSE;
        }

        fclose($fp);
        return TRUE;
    }
}

这个函数通过了 

DIRECTORY_SEPARATOR # 目录分隔符

来确定是不是unix类的系统。

这个函数说明两点:

第一:安全摸下 is_writable 工作的不一定能正常工作

第二:winows 下 这个函数也不能好好的工作。

函数 

mt_rand(1, 100);



<a href='http://www.ipbbs.net'>通过ci学习php</a>

离线

页脚

Powered by FluxBB