Əgər zaten mövcud deyilsə, bir qovluq yaradın.

Yüklənən wp-content/uploads eksik olduğundan WordPress mövzusunda səhvlərlə qarşılaşdığım Bluehost WordPress yükləmələri ilə bir neçə hal ilə rastlaşdım.

Göründüyü kimi, BlueHost cPanel WP yükləyicisi bu qovluğu yaratmır, baxmayaraq HostGator edir.

Beləliklə, qovluğu yoxlayır və başqa şəkildə yaradan mənim mövzuya kod əlavə etməliyəm.

540
20 февр. 20 Fevralda Scott B tərəfindən təyin olundu 2010-02-20 22:26 '10 at 10:26 pm 2010-02-20 22:26
@ 14 cavab

Aşağıdakıları cəhd edin:

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

Xahiş edirik, 0777 zaten dizinler üçün varsayılan 0777 və hala mövcud umask tarafından değiştirilebilir.

1048
20 февр. cavab 20 qəpikdə Qumbo tərəfindən verilir . 2010-02-20 22:28 '10 at 10:28 pm 2010-02-20 22:28

İşdə itkin hissəsidir. Üçüncü argüman (boolean true) kimi mkdir üçün bayrağı "recursive" keçməlisiniz, məsələn:

border=0
 mkdir('path/to/directory', 0755, true); 
115
25 февр. cavab Satish Gadhave Fevral 25 verilir 2013-02-25 22:52 '13 saat 10:52 'da 2013-02-25 22:52

Google'da göründüyü kimi daha çox bir şey. Təfsilatlar daha dəqiq olsa da, bu sualın adı daha universaldır.

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

Bəlkə, yaradılan dizinlerin uzun bir zənciri ilə bir yol tutacaq və mövcud bir kataloqa düşənədək bir qovluğu qaldıracaq. Sonra bu dizindəki növbəti kataloq yaratmaq və bütün kataloqları yaradana qədər davam edəcək. Əgər müvəffəqiyyətli olarsa, bu doğru olur.

Bu, bir stop səviyyəsinin təmin edilməsi ilə yaxşılaşdırıla bilər, buna görə istifadəçi qovluğundan və ya başqa bir şeydən kənara çıxarsa və icazələrin daxil olmasına yalnız uğursuz olur.

60
01 июня '11 в 20:44 2011-06-01 20:44 Cavab fazei 01 iyun 'da saat 20:44' də verildi 2011-06-01 20:44

Yardımçı funksiyası haqqında:

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

Dizinin müvəffəqiyyətlə yaradılıb və ya mövcud olduğu və kataloq yaradıla bilmədiyi təqdirdə doğru olur.

Daha yaxşı bir alternativ bu (xəbərdarlıq verilməməlidir):

 function makeDir($path) { return is_dir($path) || mkdir($path); } 
50
20 февр. Cavab AndiDog 20 fevral. 2010-02-20 22:33 '10 10:33 pm 2010-02-20 22:33

Bir qovluq yaratmaq üçün daha sürətli bir yol:

 if (!is_dir('path/to/directory')) { mkdir('path/to/directory', 0777, true); } 
22
14 сент. Cavab Elyor tərəfindən verildi 14 Sentyabr. 2016-09-14 09:35 '16 saat 09:35 'da 2016-09-14 09:35' a qədər

Təkrarlanan bir kataloq yolu yaratmaq:

 function makedirs($dirpath, $mode=0777) { return is_dir($dirpath) || mkdir($dirpath, $mode, true); } 

Python os.makedirs() ilhamlandı os.makedirs()

21
06 июля '14 в 2:09 2014-07-06 02:09 Cavab 06.07.2014 tarixində 2:09 2014-07-06 02:09 istifadəçi tərəfindən verilir

WordPress-də bir çox istifadəçi wp_mkdir_p funksiyası var ki, bu da öz növbəsində dizin strukturu yaradır.

Referans üçün mənbə: -

 function wp_mkdir_p( $target ) { $wrapper = null; // strip the protocol if( wp_is_stream( $target ) ) { list( $wrapper, $target ) = explode( '://', $target, 2 ); } // from php.net/mkdir user contributed notes $target = str_replace( '//', '/', $target ); // put the wrapper back on the target if( $wrapper !== null ) { $target = $wrapper . '://' . $target; } // safe mode fails with a trailing slash under certain PHP versions. $target = rtrim($target, '/'); // Use rtrim() instead of untrailingslashit to avoid formatting.php dependency. if ( empty($target) ) $target = '/'; if ( file_exists( $target ) ) return @is_dir( $target ); // We need to find the permissions of the parent folder that exists and inherit that. $target_parent = dirname( $target ); while ( '.' != $target_parent  ! is_dir( $target_parent ) ) { $target_parent = dirname( $target_parent ); } // Get the permission bits. if ( $stat = @stat( $target_parent ) ) { $dir_perms = $stat['mode']  0007777; } else { $dir_perms = 0777; } if ( @mkdir( $target, $dir_perms, true ) ) { // If a umask is set that modifies $dir_perms, we'll have to re-set the $dir_perms correctly with chmod() if ( $dir_perms != ( $dir_perms  ~umask() ) ) { $folder_parts = explode( '/', substr( $target, strlen( $target_parent ) + 1 ) ); for ( $i = 1; $i <= count( $folder_parts ); $i++ ) { @chmod( $target_parent . '/' . implode( '/', array_slice( $folder_parts, 0, $i ) ), $dir_perms ); } } return true; } return false; } 
7
12 апр. 12 Avqustda Trevor Mills tərəfindən verilən cavab 2014-04-12 03:14 '14 at 3:14 2014-04-12 03:14

Saytın girişi üçün eyni şeyə ehtiyacım var. Iki dəyişən ilə bir kataloq yaratmaq lazımdır. $ Dizini, istifadəçi lisenziya nömrəsi ilə başqa bir alt qovluq yaratmaq istədiyim əsas qovluqdur.

 include_once("../include/session.php"); $lnum = $session->lnum; //Users license number from sessions $directory = uploaded_labels; // Name of directory that folder is being created in if (!file_exists($directory."/".$lnum)) { mkdir($directory."/".$lnum, 0777, true); } 
3
12 авг. Progrower tərəfindən verilmiş cavab 12 Avqust. 2013-08-12 03:30 '13 saat 03:30 'da 2013-08-12 03:30

Bu səhv basmaqsızın ən müasir həllidir:

 if (!is_dir('path/to/directory')) { mkdir('path/to/directory'); } 
2
27 апр. Andreas tərəfindən aprelin 27-də cavab verildi 2016-04-27 20:20 '16 saat 20:20 'da 2016-04-27 20:20
 if (!is_dir('path_directory')) { @mkdir('path_directory'); } 
0
28 марта '13 в 15:33 2013-03-28 15:33 Cavab Mayur Kukadiya tərəfindən verilir , 28 Mart '13, 15:33 2013-03-28 15:33
 $upload = wp_upload_dir(); $upload_dir = $upload['basedir']; $upload_dir = $upload_dir . '/newfolder'; if (! is_dir($upload_dir)) { mkdir( $upload_dir, 0700 ); } 
0
13 сент. Nikunj Kathrotiya tərəfindən verilmiş cavab 13 sentyabr 2018-09-13 14:00 '18 saat 14:00 'də 2018-09-13 14:00' də

Siz də cəhd edə bilərsiniz:

 $dirpath = "path/to/dir"; $mode = "0777"; is_dir($dirpath) || mkdir($dirpath, $mode, true); 
0
05 сент. simhumileco tərəfindən verilmiş cavab 05 Sep. 2016-09-05 15:30 '16 saat 15:30 'da 2016-09-05 15:30

Zaten mövcud deyilsə qovluq yaradın

Ətraf mühit məsələsini nəzərə alaraq.

  • WordPress.
  • Veb hosting xidməti
  • Linux'u fərz etməmək PHP ilə çalışan Windows deyil.

Və istinadən: http://php.net/manual/en/function.mkdir.php

bool mkdir (satır $ pathname [, int $ mode = 0777 [, bool $ recursive = FALSE [, resurs $ məzmun]]])

$pathname yalnız zəruri parametr $pathname olduğunu bildirir!

Beləliklə, biz yalnız kodlaya bilərik:

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

Şərhlər:

Hər hansı bir parametr keçməməli və ya qovluğun mövcud olub olmadığını yoxlamalı və ya lazım deyilsə, rejimi parametrindən keçməliyik; Aşağıdakı səbəblərə görə:

  • Komanda komanda üçün default olaraq 0755 (paylaşılan hosting qovluğu üçün standart həll) və ya 0777 qətnaməsi olan bir qovluq yaradır.
  • PHP hostinq mode göz ardı edilir.
  • mkdir əmri, qovluq mövcud olub-olmadığını yoxlayır; belə ki, biz yalnız yekunları yoxlamaq lazımdır Yanlış; və bu, bir səhv deyil, yalnız bir xəbərdarlıqdır və xəbərdarlıq, ana server serverlərində silinir.
  • Sürətə gəldikdə isə, siqnalı aradan qaldıqda daha sürətli olur.

Bu, sualları anlamaq və ən yaxşı və ya ən optimal həlli tələb etmir.

PHP7, İstehsalat Server, Linux üzərində test edilmişdir

0
08 мая '18 в 3:30 2018-05-08 03:30 cavab WPDev tərəfindən mayın 08-də saat 18: 30-da verilir. 2018-05-08 03:30

İşi bitirdim

 //if(!is_dir($path) || !is_file($path) || !file_exists($path)){ // still erroring??? try{ mkdir($path); } catch (\ErrorException $e){ } 

şərhinin ardından işə yaramadı

0
27 июля '17 в 11:42 2017-07-27 11:42 Cavab 27 İyul tarixində Kyrre ' ye verildi 11:42 2017-07-27 11:42

haqqında suallar və ya bir sual