为什么PHP认为这个文件夹不存在?

时间:2013-10-02 10:09:16

标签: php mkdir file-exists

我在创建文件夹并写入文件时遇到了问题。

if(file_exists("helloFolder") || is_dir("helloFolder")){
    echo "folder already exists";
} else {
    echo "no folder, creating";
    mkdir("helloFolder", 0755);
}

即使文件夹已存在,也会返回"no folder, creating"。然后我收到了这个错误:

Warning:  mkdir() [function.mkdir]: No such file or directory in script.php on line 18

警告:file_put_contents(/filename.txt)[function.file-put-contents]:无法打开流:第58行的script.php中的权限被拒绝

非常奇怪的是,我调用了三个单独的脚本来执行此操作,而一个脚本始终有效,另外两个脚本总是会出现此错误。我正在同步调用脚本,所以我认为没有任何重叠。其他一切都是相同的。所有文件夹都有权限644,所有文件夹都有权限755

2 个答案:

答案 0 :(得分:4)

首先,在使用FileSystem时应该遵循绝对补丁,并且还有两个小缺陷:

  • is_dir() - 检查文件是否存在及其目录。因此file_exists()有点多余。

  • 如果您在其他地方使用相同的字符串,最好将其值保存在变量中。

最后,您的代码应如下所示,

$target = dirname(__FILE__) . '/hellodir';

if (is_dir($target)) {

    echo "folder already exists";

} else {

    echo "no folder, creating";
    // The 3-rd bool param includes recursion
    mkdir($target, 0777, true);
}

这将按预期工作。

答案 1 :(得分:2)

如果文件夹不存在,请尝试使用此代码创建文件夹:

<?php 

if (file_exists('path/to/directory')) {
    echo "Folder Already Exists";
}
else{
    mkdir('path/to/directory', 0777, true);
    echo "folder Created";
}
?>