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);
源代码:
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;
就仅仅运行一次, 每次就都可以获得结果。