PHP判断文件或者目录是否可写

在PHP中,可用is_writable()函数来判断一个 文件/目录 是否可写,详情如下:

参考

is_writable

(PHP 4, PHP 5)

is_writable — 判断给定的文件名是否可写

说明

bool is_writable ( string $filename )

如果文件存在并且可写则返回 TRUE。($filename 参数可以是一个目录名,即检查目录是否可写。 )

记住 PHP 也许只能以运行 webserver 的用户名(通常为 ‘nobody‘)来访问文件。不计入安全模式的限制。

Example #1 is_writable() 例子

<?php
$filename = ‘test.txt‘;
if (is_writable($filename)) {
	echo ‘The file is writable‘;
} else {
	echo ‘The file is not writable‘;
}
?>

注意:is_writeable() 是 is_writable() 的别名!



但是,上面那个函数在PHP4中是有BUG的,尤其是在Windows服务器下判断不准,官方相关bug报告链接如下:

http://bugs.php.net/bug.php?id=27609

为了兼容各个操作系统,可自定义一个判断可写函数,代码如下:

/**
 * 判断 文件/目录 是否可写(取代系统自带的 is_writeable 函数)
 *
 * @param string $file 文件/目录
 * @return boolean
 */
function new_is_writeable($file) {
	if (is_dir($file)){
		$dir = $file;
		if ($fp = @fopen("$dir/test.txt", ‘w‘)) {
			@fclose($fp);
			@unlink("$dir/test.txt");
			$writeable = 1;
		} else {
			$writeable = 0;
		}
	} else {
		if ($fp = @fopen($file, ‘a+‘)) {
			@fclose($fp);
			$writeable = 1;
		} else {
			$writeable = 0;
		}
	}

	return $writeable;
}
时间: 2024-10-16 02:07:52

PHP判断文件或者目录是否可写的相关文章

Shell脚本(脚本中的逻辑判断,逻辑判断表达式,判断文件和目录属性,case判断)

逻辑判断表达式: -gt = 大于    -lt = 小于    -ge = 大于等于   -le = 小于等于   -eq = 恒等于  -ne = 不等于 这里要注意空格 也可以用&&和||结合多个条件 例如1: [[email protected] shell]# cat if4.sh #/bin/bash a=5 if [ $a -gt 4 ] && [ $a -lt 6 ] then echo "4<a<6" else echo n

linux下判断文件和目录是否存在

1.前言 工作中涉及到文件系统,有时候需要判断文件和目录是否存在.我结合APUE第四章文件和目录,总结一下如何正确判断文件和目录是否存在,方便以后查询. 2.stat系列函数 stat函数用来返回与文件有关的结构信息.stat系列函数有三种情况,分别对应文件名称.文件描述符和符号链接文件.stat结构描述了文件的属性,主要包括文件的类型.文件大小等等.详细stat结构如下所示: 1 struct stat { 2 mode_t st_mode; // file type & mode(permi

shell中的逻辑判断,if 判断文件、目录属性,if判断的一些特殊用法

shell中的逻辑判断 格式1:if 条件 ; then 语句; fi //如果满足条件,然后执行语句 [[email protected] shell]# cat if1.sh #!/bin/bash a=5 if [ $a -gt 3 ] then echo ok fi [[email protected] shell]# sh -x if1.sh + a=5 + '[' 5 -gt 3 ']' + echo ok ok 格式2:if 条件; then 语句; else 语句; fi //如

if 判断文件、目录属性

[ -f file ]判断是否是普通文件,是否存在 #!/bin/bash f="/tmp/1.txt" #定义变量 if [ -f $f ] #如果变量f存在,且是个普通文件 then #那么 echo $f exist #echo $f exist else #否则 touch $f #创建这个文件 fi [ -d file ] 判断是否是目录,是否存在 #!/bin/bash f="/tmp/1.txt" #定义变量 if [ -d $f ] #如果变量f存在

shell中判断文件或目录是否存在

可以通过man test来查看文档,下面的文章转自http://m.blog.csdn.net/blog/yuanjungogogo/9222875 #!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" # 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 if [ ! -x "$myPath"]; then mkdir "$myPa

(Go)13.判断文件或者目录是否存在

判断文件或者目录是否存在,如果目录不存在,则创建 package main import ( "fmt" "os" ) func main() { path := "d:/test.txt" b, err := PathExists(path) if err != nil { fmt.Printf("PathExists(%s),err(%v)\n", path, err) } if b { fmt.Printf("

shell 判断文件、目录是否存在

shell判断文件是否存在 1. shell判断文件,目录是否存在或者具有权限 2. #!/bin/sh 3. 4. myPath="/var/log/httpd/" 5. myFile="/var /log/httpd/access.log" 6. 7. # 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 8. if [ ! -x "$myPath"]; then 9. mkdir "$myPath" 10

java+selenium+new——创建一个文件,判断文件的目录知否存在,以及创建目录

package rjcs; import java.io.File; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebElement; import org.openqa.seleniu

iOS6.1 &amp; iOS 7 &amp; iOS8 判断沙盒文件或者目录是否存在,以及判断是文件还是目录的一个隐藏问题

- (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(BOOL *)isDirectory 通常,iOS系统中判断文件或者目录是否存在,可以用上面这个API. 第二个参数 isDirectory是个传出参数, 用于返回,是文件还是目录. 一般两种情况会使用这个API 需求一. 判断文件或者目录是否存在 需求二. 判断path是文件还是目录 需求一.只要判断这个API的返回值,YES为存在,NO为不存在即可,isDirectory不需要判断