is_writeable函数bug问题
来源:互联网 发布:移动网络初始密码 编辑:程序博客网 时间:2024/06/05 05:05
【题目】PHP的is_writeable()函数存在Bug,无法准确判断一个目录/文件是否可写,请写一个函数来判断目录/文件是否绝对可写。
【级别】六级
【解决】 下面是CodeIgniter 中的is_really_writable函数解决方案,详见函数注释
其中bug存在两个方面,
1、在windowns中,当文件只有只读属性时,is_writeable()函数才返回false,当返回true时,该文件不一定是可写的。
如果是目录,在目录中新建文件并通过打开文件来判断;
如果是文件,可以通过打开文件(fopen),来测试文件是否可写。
2、在Unix中,当php配置文件中开启safe_mode时(safe_mode=on),is_writeable()同样不可用。
读取配置文件是否safe_mode是否开启。
/** * 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; }}
1 0
- is_writeable函数bug问题
- php is_writeable函数bug问题
- [PHP四六级] 腾讯笔试之is_writeable函数bug问题
- PHP的is_writeable()函数存在Bug,ci里边有个函数可以判断文件是否真的可写
- PHP is_writeable() 函数判断指定的文件是否可写
- scanf()函数的bug问题
- 问题 bug
- 多线程BUG捕捉之:匿名函数带来的问题
- 多线程BUG捕捉之:匿名函数带来的问题
- bug宝典JAVA篇之构造函数问题
- CreateToolbarEx函数的BUG
- CvMinAreaRect2函数的bug!!!!!
- TinyXml Print 函数 Bug
- printf函数bug
- keyup()函数bug
- DBCP的bug问题
- IE Bug 问题集锦
- webkit Bug问题定位
- 工作感想关于qc
- Redmine平台简介
- 4.14 Android 拍照
- KVC练习
- Spark UI (基于Yarn) 分析与定制
- is_writeable函数bug问题
- C++命名空间
- 从启用 HTTP/2 导致网站无法访问说起
- Spark动态资源分配-Dynamic Resource Allocation
- 监听JButton的三种方式
- IBM Rational AppScan保存报告时提示错误的解决方案
- 结构体字节对齐
- 【论文笔记】SparkNET: 用Spark训练深度神经网络
- POJ 3321 Apple Tree