Zaten yoksa bir klasör oluşturun

5 Cevap php

Ben yüklenenler klasörünü (wp-content/uploads) mevcut değildi çünkü benim wordpress tema hataları Karşılaştığınız Bluehost ile yükler wordpress ile bir kaç durumda çalıştırmak.

HostGator yok ama görünüşe göre bluehost cpanel WP yükleyici, bu klasörü yaratmaz.

Yani klasörü denetler ve aksi halde yaratan benim tema kodu eklemeniz gerekir.

5 Cevap

Bu deneyin:

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

0777 zaten dizinleri için varsayılan mod ve hala geçerli Umask tarafından değiştirilmiş olabilir unutmayın.

Burada eksik parça. Böyle mkdir çağrısı 'özyinelemeli' bayrağı geçmek gerekir:

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

Biraz daha evrensel bir şey bu google gelir beri. Ayrıntılar daha spesifik olmakla birlikte, bu sorunun başlık daha evrenseldir.

/** 
 * 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;
}

Bu muhtemelen yaratılmamış dizinleri uzun bir zincir ile, bir yol almak, ve varolan bir dizine alır kadar bir dizin kadar devam edecek. Sonra o dizinde bir sonraki dizin oluşturma girişimi, ve tüm dizinleri yarattı kadar devam edecektir. Eğer başarılı olursa true döndürür.

Kullanıcı klasöre veya bir şey ötesinde ve izinleri dahil ederek giderse sadece başarısız böylece bir durdurma seviyesi sağlanarak geliştirilebilir.

Böyle bir yardımcı işlevi hakkında neler:

function makeDir($path)
{
   $ret = mkdir($path); // use @mkdir if you want to suppress warnings/errors
   return $ret === true || is_dir($path);
}

Dizin yaratılmış olamazdı eğer dizin başarıyla oluşturuldu veya zaten mevcut ise true dönmek ve false olacaktır.

Başka bir alternatif:

function makeDir($path)
{
   return is_dir($path) || mkdir($path);
}

WordPress içinde ardışık bir dizin yapısı oluşturmak olacak wp_mkdir_p çok kullanışlı fonksiyonu da var.