zoukankan      html  css  js  c++  java
  • php 判断文件是否可写 ci is_really_writable()

    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;
    }
  • 相关阅读:
    蜘蛛禁止访问文件
    基于PhalApi的Smarty拓展 (视图层的应用)
    MySQL数据库存表情
    查看PHP版本等相关信息
    读取数据库表信息
    nginx简介
    Redis发布订阅
    Redis持久化
    Redis主从复制
    Redis的Java客户端Jedis
  • 原文地址:https://www.cnblogs.com/wuheping/p/2956186.html
Copyright © 2011-2022 走看看