我在Bluehost上安装WordPress时遇到过一些情况,我的WordPress主题遇到了错误,因为上传文件夹wp-content/uploads不存在。
显然Bluehost cPanel WordPress安装程序不会创建这个文件夹,但HostGator可以。
因此,我需要向我的主题添加代码,以检查文件夹并创建它。
我在Bluehost上安装WordPress时遇到过一些情况,我的WordPress主题遇到了错误,因为上传文件夹wp-content/uploads不存在。
显然Bluehost cPanel WordPress安装程序不会创建这个文件夹,但HostGator可以。
因此,我需要向我的主题添加代码,以检查文件夹并创建它。
当前回答
$upload = wp_upload_dir();
$upload_dir = $upload['basedir'];
$upload_dir = $upload_dir . '/newfolder';
if (! is_dir($upload_dir)) {
mkdir( $upload_dir, 0700 );
}
其他回答
递归创建目录路径:
function makedirs($dirpath, $mode=0777) {
return is_dir($dirpath) || mkdir($dirpath, $mode, true);
}
灵感来自Python的os.makedirs()
if (!is_dir('path_directory')) {
@mkdir('path_directory');
}
试试这个,使用mkdir:
if (!file_exists('path/to/directory')) {
mkdir('path/to/directory', 0777, true);
}
请注意,0777已经是目录的默认模式,并且仍然可能被当前umask修改。
最好的方法是使用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/
作为现有解决方案的补充,一个效用函数。
function createDir($path, $mode = 0777, $recursive = true) {
if(file_exists($path)) return true;
return mkdir($path, $mode, $recursive);
}
createDir('path/to/directory');
如果已经存在或成功创建,则返回true。否则返回false。