【问题标题】:Why does PHP think this folder doesn't exist?为什么 PHP 认为这个文件夹不存在?
【发布时间】:2013-10-08 16:43:33
【问题描述】:

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

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的权限。

【问题讨论】:

  • 网页根目录 !== 文件系统根目录

标签: php mkdir file-exists


【解决方案1】:

首先,在使用 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);
}

这将按预期工作。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-23
      • 1970-01-01
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多