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

时间:2010-08-29 21:32:14

标签: php permissions

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

4 个答案:

答案 0 :(得分: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';
}

答案 1 :(得分:5)

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

  

<强> is_writable

     

如果文件名存在且可写

,则返回TRUE

这意味着:

is_writable(__DIR__.'/file.txt');

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

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

is_writable(__DIR__);

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

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;
}

答案 2 :(得分:3)

is_writable函数是好东西。但是,OP询问了如何在与脚本相同的目录中创建文件。从vlad b中偷偷偷窃,做到这一点:

$filename = __DIR__ . '/test.txt';
if (is_writable($filename)) {
    echo 'The file is writable';
} else {
    echo 'The file is not writable';
}

有关__DIR__的详细信息,请参阅 predefined constants的php手册。如果没有它,您将在当前工作目录中创建一个文件,这可能或多或少地为您的目的定义。

答案 3 :(得分:0)

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