网站开发技术

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

您尚未登录。

#1 ci学习笔记 » core/common.php -- is_really_writable » 2015-03-25 11:54:30

ci
回复: 0

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);


#2 ci学习笔记 » core/common.php -- is_php » 2015-03-25 11:45:55

ci
回复: 0

源代码:

if ( ! function_exists('is_php'))
{
    function is_php($version = '5.0.0')
    {
        static $_is_php;
        $version = (string)$version;

        if ( ! isset($_is_php[$version]))
        {
            $_is_php[$version] = (version_compare(PHP_VERSION, $version) < 0) ? FALSE : TRUE;
        }

        return $_is_php[$version];
    }
}

这个函数的作用就是 判断php是不是版本大于5. 

这里有个常量 PHP_VERSION 表示php的版本。

重点是一个静态变量 static $_is_php;

这个变量最终可以变为数组, 如果版面比 5.0.0 

$_is_php = 

array(1) {

  ["5.0.0"]=>

  bool(true)

}

使用静态变量这句

$_is_php[$version] = (version_compare(PHP_VERSION, $version) < 0) ? FALSE : TRUE;

就仅仅运行一次, 每次就都可以获得结果。

#3 ci学习笔记 » 通过学习ci学习php » 2015-03-25 11:27:56

ci
回复: 0

  1. 为什么写这个?

答案:学习php


页脚

Powered by FluxBB