Создать папку, если она еще не существует - PullRequest
579 голосов
/ 20 февраля 2010

Я столкнулся с несколькими случаями установки WordPress с Bluehost, где я столкнулся с ошибками в моей теме WordPress, поскольку папка для загрузки wp-content/uploads отсутствовала.

Очевидно, установщик Bluehost cPanel WP не создает эту папку, хотя HostGator делает.

Поэтому мне нужно добавить код в мою тему, который проверяет папку и создает ее в противном случае.

Ответы [ 15 ]

1 голос
/ 06 февраля 2019

Мы всегда должны модулировать наш код, и я написал ту же самую проверку ниже ... Сначала мы проверяем каталог, если каталог отсутствует, мы создаем каталог.

$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;
    }
}
1 голос
/ 13 сентября 2018
$upload = wp_upload_dir();
$upload_dir = $upload['basedir'];
$upload_dir = $upload_dir . '/newfolder';
if (! is_dir($upload_dir)) {
   mkdir( $upload_dir, 0700 );
}
1 голос
/ 08 мая 2018

Чтобы создать папку, если она еще не существует

Учитывая среду вопроса.

  • WordPress.
  • Сервер веб-хостинга.
  • Предполагается, что в Linux не Windows, а PHP.

И цитата из: http://php.net/manual/en/function.mkdir.php

bool mkdir (строка $ pathname [, int $ mode = 0777 [, bool $ recursive = ЛОЖЬ [, ресурс $ context]]])

В руководстве сказано, что единственным обязательным параметром является $pathname!

Итак, мы можем просто кодировать:

<?php
error_reporting(0); 
if(!mkdir('wp-content/uploads')){
   // todo
}
?>

Пояснение:

Нам не нужно передавать какой-либо параметр или проверять, существует ли папка, или даже передавать параметр режима, если в этом нет необходимости; по следующим причинам:

  • Команда создаст папку с разрешением 0755 (разрешение по умолчанию для папки общего хостинга) или 0777 по умолчанию для команды.
  • mode игнорируется на Windows Hosting под PHP .
  • Уже команда mkdir имеет встроенную проверку, если папка существует; поэтому нам нужно проверять возврат только True | False; и это не ошибка, это только предупреждение, и предупреждение отключено на хост-серверах по умолчанию.
  • По скорости это быстрее, если предупреждение отключено.

Это просто еще один способ разобраться в вопросе и не требовать лучшего или наиболее оптимального решения.

Протестировано на PHP7, Рабочий сервер, Linux

1 голос
/ 05 сентября 2016

Вы также можете попробовать:

$dirpath = "path/to/dir";
$mode = "0777";
is_dir($dirpath) || mkdir($dirpath, $mode, true);
1 голос
/ 28 марта 2013
if (!is_dir('path_directory')) {
    @mkdir('path_directory');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...