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

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

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


当前回答

对于你关于WordPress的具体问题,使用下面的代码:

if (!is_dir(ABSPATH . 'wp-content/uploads')) wp_mkdir_p(ABSPATH . 'wp-content/uploads');

函数参考:WordPress wp_mkdir_p。ABSPATH是返回WordPress工作目录路径的常量。

还有另一个名为wp_upload_dir()的WordPress函数。它返回上传目录路径,如果不存在,则创建一个文件夹。

$upload_path = wp_upload_dir();

下面的代码一般适用于PHP。

if (!is_dir('path/to/directory')) mkdir('path/to/directory', 0777, true);

函数参考:PHP is_dir()

其他回答

我们可以使用mkdir创建文件夹。我们也可以为它设置权限。

价值的许可 0不能读、写或执行 1只能执行 2 .只会写字 3 .可以写入和执行 4 .只能阅读 5 .可以读取和执行 6 .会读会写 7能读、写和执行

<?PHP
  
// Making a directory with the provision
// of all permissions to the owner and 
// the owner's user group
mkdir("/documents/post/", 0770, true)
  
?>

这里有一些更通用的东西,因为它出现在谷歌上。虽然细节更具体,但这个问题的标题更具有普遍性。

/**
 * recursively create a long directory path
 */
function createPath($path) {
    if (is_dir($path)) 
        return true;
    $prev_path = substr($path, 0, strrpos($path, '/', -2) + 1 );
    $return = createPath($prev_path);
    return ($return && is_writable($prev_path)) ? mkdir($path) : false;
}

这将采用一条路径,可能包含一长串未创建的目录,并继续向上移动一个目录,直到到达一个现有目录。然后,它将尝试在该目录中创建下一个目录,直到创建所有目录为止。如果成功则返回true。

它可以通过提供一个停止级别来改进,这样它就会在超出用户文件夹或其他地方时失败,并包括权限。

递归创建目录路径:

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

灵感来自Python的os.makedirs()

这是没有错误抑制的最新解决方案:

if (!is_dir('path/to/directory')) {
    mkdir('path/to/directory');
}

对于你关于WordPress的具体问题,使用下面的代码:

if (!is_dir(ABSPATH . 'wp-content/uploads')) wp_mkdir_p(ABSPATH . 'wp-content/uploads');

函数参考:WordPress wp_mkdir_p。ABSPATH是返回WordPress工作目录路径的常量。

还有另一个名为wp_upload_dir()的WordPress函数。它返回上传目录路径,如果不存在,则创建一个文件夹。

$upload_path = wp_upload_dir();

下面的代码一般适用于PHP。

if (!is_dir('path/to/directory')) mkdir('path/to/directory', 0777, true);

函数参考:PHP is_dir()