我在Bluehost上安装WordPress时遇到过一些情况,我的WordPress主题遇到了错误,因为上传文件夹wp-content/uploads不存在。

显然Bluehost cPanel WordPress安装程序不会创建这个文件夹,但HostGator可以。

因此,我需要向我的主题添加代码,以检查文件夹并创建它。


当前回答

像这样使用一个helper函数:

function makeDir($path)
{
     $ret = mkdir($path); // use @mkdir if you want to suppress warnings/errors
     return $ret === true || is_dir($path);
}

如果目录已成功创建或已经存在,则返回true;如果目录无法创建,则返回false。

一个更好的选择是这样的(不应该给出任何警告):

function makeDir($path)
{
     return is_dir($path) || mkdir($path);
}

其他回答

像这样使用一个helper函数:

function makeDir($path)
{
     $ret = mkdir($path); // use @mkdir if you want to suppress warnings/errors
     return $ret === true || is_dir($path);
}

如果目录已成功创建或已经存在,则返回true;如果目录无法创建,则返回false。

一个更好的选择是这样的(不应该给出任何警告):

function makeDir($path)
{
     return is_dir($path) || mkdir($path);
}

你还可以试试:

$dirpath = "path/to/dir";
$mode = "0764";
is_dir($dirpath) || mkdir($dirpath, $mode, true);

递归创建目录路径:

function makedirs($dirpath, $mode=0777) {
    return is_dir($dirpath) || mkdir($dirpath, $mode, true);
}

灵感来自Python的os.makedirs()

如果您想避免file_exists vs. is_dir问题,我建议您看一下这里。

我尝试了这一点,它只创建目录,如果目录不存在。它不关心是否有同名的文件。

/* Creates the directory if it does not exist */
$path_to_directory = 'path/to/directory';
if (!file_exists($path_to_directory) && !is_dir($path_to_directory)) {
    mkdir($path_to_directory, 0777, true);
}

我们应该始终模块化我们的代码,我在下面写了同样的检查…

我们先查一下目录。如果该目录不存在,则创建该目录。

$boolDirPresents = $this->CheckDir($DirectoryName);

if (!$boolDirPresents) {
        $boolCreateDirectory = $this->CreateDirectory($DirectoryName);
        if ($boolCreateDirectory) {
        echo "Created successfully";
      }
  }

function CheckDir($DirName) {
    if (file_exists($DirName)) {
        echo "Dir Exists<br>";
        return true;
    } else {
        echo "Dir Not Absent<br>";
        return false;
    }
}
     
function CreateDirectory($DirName) {
    if (mkdir($DirName, 0777)) {
        return true;
    } else {
        return false;
    }
}