zoukankan      html  css  js  c++  java
  • php is_writeable函数bug问题

    其中bug存在两个方面,
    1、在windowns中,当文件只有只读属性时,is_writeable()函数才返回false,当返回true时,该文件不一定是可写的。
    如果是目录,在目录中新建文件并通过打开文件来判断;
    如果是文件,可以通过打开文件(fopen),来测试文件是否可写。
    2、在Unix中,当php配置文件中开启safe_mode时(safe_mode=on),is_writeable()同样不可用。
    读取配置文件是否safe_mode是否开启。

    <pre>
    /**
    * Tests for file writability
    *
    * is_writable() returns TRUE on Windows servers when you really can't write to
    * the file, based on the read-only attribute. is_writable() is also unreliable
    * on Unix servers if safe_mode is on.
    *
    * @access private
    * @return void
    */
    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
    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;
    }
    }
    </pre>

  • 相关阅读:
    np.newaxis
    UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 576-577: invalid continuation byte
    shell $() vs ${}
    install docker-ce for ubuntu
    ImportError: pycurl: libcurl link-time ssl backend (nss) is different
    saltstack install on centos7
    pycharm 用远程环境时报错bash: line 0: cd: /home/tmp: No such file or directory
    计算函用运行用时
    scrapy-redis
    merge dict key
  • 原文地址:https://www.cnblogs.com/newmiracle/p/11865496.html
Copyright © 2011-2022 走看看