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

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

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


当前回答

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

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

其他回答

试试这个,使用mkdir:

if (!file_exists('path/to/directory')) {
    mkdir('path/to/directory', 0777, true);
}

请注意,0777已经是目录的默认模式,并且仍然可能被当前umask修改。

$upload = wp_upload_dir();
$upload_dir = $upload['basedir'];
$upload_dir = $upload_dir . '/newfolder';
if (! is_dir($upload_dir)) {
   mkdir( $upload_dir, 0700 );
}

最好的方法是使用wp_mkdir_p函数。此函数将递归地创建具有正确权限的文件夹。

此外,你可以跳过文件夹存在条件,因为函数返回:

当目录已创建或以前存在时,为 如果不能创建目录,则为False。

例子:

$path = 'path/to/directory';
if ( wp_mkdir_p( $path ) ) {
    // Directory exists or was created.
}

更多:https://developer.wordpress.org/reference/functions/wp_mkdir_p/

这是缺失的部分。你需要在mkdir调用中传递'recursive'标志作为第三个参数(布尔值true),如下所示:

mkdir('path/to/directory', 0755, true);

如果您想避免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);
}