如何检查当前路径中是否具有写入权限

d-c*_*d-c 3 php permissions

在php中我如何确定是否可以在与尝试创建文件的脚本相同的路径中创建文件

小智 5

你有没有尝试过is_writable()函数?

文档 http://www.php.net/manual/en/function.is-writable.php

例:

$filename = 'test.txt';
if (is_writable($filename)) {
    echo 'The file is writable';
} else {
    echo 'The file is not writable';
}
Run Code Online (Sandbox Code Playgroud)


Lei*_*ell 5

不幸的是,到目前为止所有的答案都是错误的或不完整的.

is_writable

如果文件名存在且可写,则返回TRUE

这意味着:

is_writable(__DIR__.'/file.txt');
Run Code Online (Sandbox Code Playgroud)

即使脚本对目录具有写权限,也会返回false,这是因为file.txt尚不存在.

假设文件尚不存在,那么正确答案就是:

is_writable(__DIR__);
Run Code Online (Sandbox Code Playgroud)

这是一个真实世界的例子,包含无论文件是否已存在的逻辑:

function isFileWritable($path)
{
    $writable_file = (file_exists($path) && is_writable($path));
    $writable_directory = (!file_exists($path) && is_writable(dirname($path)));

    if ($writable_file || $writable_directory) {
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)


Svi*_*ack 0

使用is_writablePHP 函数、文档和示例源代码可以在http://pl2.php.net/manual/en/function.is-writable.php找到