协慌网

登录 贡献 社区

创建文件夹(如果尚不存在)

我在使用 Bluehost进行 WordPress 安装时wp-content/uploads ,我的 WordPress 主题遇到了错误。

显然,尽管 HostGator可以,Bluehost cPanel WordPress 安装程序不会创建此文件夹。

因此,我需要将代码添加到主题中,以检查文件夹并以其他方式创建该文件夹。

答案

使用 mkdir尝试一下:

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

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

这是丢失的那一块。您需要像这样在 mkdir调用中将 “递归” 标志作为第三个参数(布尔值 true)传递:

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

自 Google 出现以来,它的通用性有所提高。尽管细节更为具体,但此问题的标题更为通用。

/** 
 * 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。

可以通过提供一个停止级别来改进它,如果它超出了用户文件夹或其他内容,并且包含了权限,它只会失败。