2008-09-20 70 views

回答

80

是的,它的文件夹的工作....如果文件存在并且可写

返回TRUE。 filename参数可以是一个目录名称,允许您检查目录是否可写。

+22

诀窍是你不能在你真正想测试的文件夹中指定一个尚不存在的*文件*只需指定文件夹即可。 – philfreo 2010-09-24 17:33:51

1

stat()

很像系统统计,但在PHP中。你想要检查的是模式值,就像你在其他语言中调用统计的方式一样(I.E.C/C++)。

http://us2.php.net/stat

3

您可以发送一个完整的文件路径is_writable()功能。如果该文件尚不存在于目录中,则is_writable()将返回false。如果是这种情况,您需要检查目录本身,并删除文件名。如果你这样做,is_writable会正确地告诉你该目录是否可写。如果$file包含您的文件路径做到这一点:

$file_directory = dirname($file); 

然后使用is_writable($file_directory),以确定是否该文件夹是可写的。

我希望这可以帮助别人。

12

这是代码:)

<?php 

$newFileName = '/var/www/your/file.txt'; 

if (! is_writable(dirname($newFileName))) { 

    echo dirname($newFileName) . ' must writable!!!'; 
} else { 

    // blah blah blah 
} 
+0

啊,`dirname($ new_file_name)`,这比我打算做的更简单。我打算使用`pathinfo($ new_file_name,PATHINFO_DIRNAME)`。谢谢。 – 2014-04-24 07:57:23

5

成为所有者/组/世界

$dir_writable = substr(sprintf('%o', fileperms($folder)), -4) == "0774" ? "true" : "false"; 

和平更具体的...

+0

这个功能应该改进。现在它将返回false,例如`0777`的权限。 – 2016-01-27 13:27:58

0

这是我要做的事:

file_put_contents()创建一个文件并检查返回值,如果是肯定的(写入的数量字节),那么你可以继续做你必须做什么,如果是假的,然后它不可写

$is_writable = file_put_contents('directory/dummy.txt', "hello"); 

if ($is_writable > 0) echo "yes directory it is writable"; 

else echo "NO directory it is not writable"; 

,那么你可以使用的unlink()

unlink('directory/dummy.txt'); 
+0

虽然这在技术上有效,但绝对不是推荐的方法。文件系统操作相对较慢,会产生大量开销,所以创建一个虚拟文件然后删除/取消链接它比其他大多数方法慢得多。 – Byson 2015-07-29 11:27:23

0

删除虚拟文件我写了一个小脚本(我把它叫做isWritable。php),它检测脚本所在的同一目录中的所有目录,并写入该页面以确定每个目录是否可写。希望这可以帮助。

<?php 
// isWritable.php detects all directories in the same directory the script is in 
// and writes to the page whether each directory is writable or not. 

$dirs = array_filter(glob('*'), 'is_dir'); 

foreach ($dirs as $dir) { 
    if (is_writable($dir)) { 
     echo $dir.' is writable.<br>'; 
    } else { 
     echo $dir.' is not writable. Permissions may have to be adjusted.<br>'; 
    } 
} 
?> 
相关问题