如何检查,如果目录中的PHP是可写的?(How do I check if a directory

2019-06-25 06:19发布

有谁知道我怎么能检查,看是否有目录PHP是可写的?

该功能is_writable不适用于文件夹的工作。 (编辑:它不工作,请参阅接受的答案。)

Answer 1:

是的,它的文件夹工作....

如果文件存在并且可写则返回TRUE。 文件名参数可以是一个目录名,允许你检查一个目录是可写的。



Answer 2:

这是代码:)

<?php 

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

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

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

    // blah blah blah
}


Answer 3:

成为所有者/组/世界更具体

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

和平...



Answer 4:

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

$file_directory = dirname($file);

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

我希望这可以帮助别人。



Answer 5:

根据对is_writable的文件 ,它应该只是工作-但你说的“文件夹”,所以这可能是一个Windows的问题 。 该意见提出一个解决办法 。

(A冲到前面阅读使我觉得结尾的斜杠是重要的,但原来是专门针对此解决)。



Answer 6:

我写了一个小脚本(我称之为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>';
    } 
}
?>


Answer 7:

STAT()

就像一个系统的统计,但是在PHP。 要检查什么是模式值,就像你将任何其他通话器统计在其他语言(IE C / C ++)。

http://us2.php.net/stat



Answer 8:

根据PHP手册is_writable应在目录上正常工作。



Answer 9:

这是我要做的事:

创建一个文件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('directory/dummy.txt');


Answer 10:

就我而言, is_writable返回真实的,但试图写入文件时-生成一个错误。
此代码有助于检查$dir存在并且是可写的:

<?php
$dir = '/path/to/the/dir';

// try to create this directory if it doesn't exist
$booExists     = is_dir($dir) || (mkdir($dir, 0774, true) && is_dir($dir));
$booIsWritable = false;
if ($booExists && is_writable($dir)) {
    $tempFile = tempnam($dir, 'tmp');
    if ($tempFile !== false) {
        $res = file_put_contents($tempFile, 'test');

        $booIsWritable = $res !== false;
        @unlink($tempFile);
    }
}


文章来源: How do I check if a directory is writeable in PHP?