नवीनतम लेख
घर / लिनक्स सिंहावलोकन / Php कार्य करता है - यदि यह पहले से मौजूद नहीं है तो एक फ़ोल्डर बनाएं। PHP में Mkdir फ़ंक्शन, विवरण और उदाहरण Php यदि मौजूद नहीं है तो एक फ़ोल्डर बनाना

Php कार्य करता है - यदि यह पहले से मौजूद नहीं है तो एक फ़ोल्डर बनाएं। PHP में Mkdir फ़ंक्शन, विवरण और उदाहरण Php यदि मौजूद नहीं है तो एक फ़ोल्डर बनाना

Mkdir() फ़ंक्शन निर्दिष्ट निर्देशिका में एक नया फ़ोल्डर बनाता है। यदि सृजन सफल होता है, तो True लौटाता है। एक नया फ़ोल्डर बनाते समय, आप $mode पैरामीटर का उपयोग करके उस तक पहुंच अधिकार सेट कर सकते हैं। $recursive को True पर सेट करके, आप एकाधिक सबफ़ोल्डर बना सकते हैं।

PHP संस्करण 4 और उच्चतर।

फ़ंक्शन बूल mkdir(स्ट्रिंग $ पथनाम [, पूर्णांक $ मोड [, बूल $ पुनरावर्ती [, संसाधन $ संदर्भ]]])

mkdir फ़ंक्शन पैरामीटर

$पथनामबनाई जाने वाली निर्देशिका का पथ.
$मोडबनाए गए फ़ोल्डर के अधिकार। अधिकारों को पहले स्थान पर अनिवार्य शून्य (0777) के साथ एक अष्टक मान के रूप में निर्दिष्ट किया गया है। पहले शून्य के अलावा, संख्याएं मालिक के लिए, मालिक के समूह के लिए, बाकी सभी के लिए पहुंच स्तर का प्रतिनिधित्व करती हैं।
पहुंच स्तर संख्याओं द्वारा निर्धारित होता है:
0 - पहुंच अस्वीकृत;
1 - पढ़ने की पहुंच;
2 - लेखन पहुंच;
4 - निष्पादन पहुंच।
अक्सर, अधिकारों को समग्र राशि के रूप में निर्दिष्ट किया जाता है, उदाहरण के लिए:
7 – पूर्ण पहुँच (1+2+4);
5 - पढ़ना और निष्पादन (1+4)।
डिफ़ॉल्ट मान 0777 है.
$पुनरावर्तीएक बूलियन पैरामीटर जो यह निर्धारित करता है कि नेस्टेड उपनिर्देशिकाएँ बनाई जा सकती हैं या नहीं।
$संदर्भस्ट्रीम के साथ काम करते समय उपयोग किया जाता है। PHP 5.0.0 में जोड़ा गया।

Mkdir फ़ंक्शन का उपयोग करने के उदाहरण

एमकेडीआईआर( "नया फ़ोल्डर" );

एमकेडीआईआर( "../नया फ़ोल्डर" ); // एक स्तर नीचे

mkdir('/folder1/folder2/newfolder' ); // पूरा पथ

एमकेडीआईआर( "न्यूफ़ोल्डर" , 0777); // निर्दिष्ट अधिकारों के साथ एक फ़ोल्डर बनाएं

यदि आपको एकाधिक सबफ़ोल्डर बनाने की आवश्यकता है, तो आपको $recursive = True सेट करना होगा।

mkdir ("फ़ोल्डर1/फ़ोल्डर2/न्यूफ़ोल्डर" , 0777, सत्य); // वर्तमान निर्देशिका में एक फ़ोल्डर बनाना


इस लेख के प्रकाशन की अनुमति केवल लेख के लेखक की वेबसाइट के लिंक के साथ ही है

इस आलेख में मैं फ़ोल्डर बनाने की समस्या से निपटने के लिए एक विकल्प का वर्णन करूंगा php का उपयोग करनासुरक्षित मोड में.
PHP में एक फ़ोल्डर बनाने के लिए, एक मानक mkdir() फ़ंक्शन होता है, लेकिन ज्यादातर मामलों में यह बेकार हो जाता है और बहुत से लोग इसके बारे में जानते हैं, लेकिन बहुत से लोग नहीं जानते कि आप इस समस्या से कैसे निपट सकते हैं।
सब कुछ बहुत सरल है, आपको बिल्ट-इन का उपयोग करके फ़ोल्डर्स बनाने की आवश्यकता है php फ़ंक्शंसएफ़टीपी.
नीचे मैं इसके बारे में अधिक विस्तार से लिखता हूं।

फ़ोल्डर बनाते समय mkdir() के साथ समस्याएँ।
जैसा कि आप जानते हैं, यदि php में सक्षम है सुरक्षित मोड(सुरक्षित_मोड = चालू), फिर mkdir() का उपयोग करके फ़ोल्डर्स (निर्देशिकाएं) बनाने से काम नहीं चलेगा। अधिक सटीक होने के लिए, आप इसे बना सकते हैं, लेकिन इस फ़ोल्डर का आगे उपयोग असंभव होगा। आप इस फ़ोल्डर में फ़ाइलें अपलोड नहीं कर पाएंगे, आप इसका नाम नहीं बदल पाएंगे और आप इसे हटा नहीं पाएंगे, भले ही आप एफ़टीपी के माध्यम से लॉग इन करें (कुछ मामलों में आप एफ़टीपी के माध्यम से हटा सकते हैं)।

सुरक्षित मोड सभी सर्वरों और सभी होस्टिंग प्रदाताओं पर डिफ़ॉल्ट रूप से सक्षम है। यदि आपके पास सुरक्षित मोड को अक्षम करने का विकल्प नहीं है, तो एक और तरीका है।

एफ़टीपी का उपयोग करके PHP में फ़ोल्डर्स बनाना।
लगभग सभी सर्वर और होस्टिंग में php में ftp समर्थन सक्षम है।
इन फ़ंक्शंस की सहायता से हम mkdir() फ़ोल्डर बनाने की समस्या से निजात पा लेंगे।
एफ़टीपी के माध्यम से एक फ़ोल्डर बनाने का एक उदाहरण.

$conn_id = @ ftp_connect ("ftp.server.ru" , 21 , 5 ); // एफ़टीपी सर्वर से कनेक्ट करें
यदि($conn_id) // यदि सर्वर से कनेक्शन सफल रहा, तो जारी रखें
{
$login_result = @ftp_login($conn_id, "उपयोगकर्ता", "पास"); // एफ़टीपी के लिए अपना लॉगिन और पासवर्ड दर्ज करें
अगर($लॉगिन_परिणाम) // यदि सर्वर ने लॉगिन पासवर्ड स्वीकार कर लिया है, तो आगे बढ़ें
{
// अब आपको निष्क्रिय मोड के साथ खेलने की जरूरत है, इसे चालू या बंद करें (सही, गलत)
// यदि आगे एफ़टीपी फ़ंक्शंस सही ढंग से काम नहीं करते हैं, तो इस पैरामीटर को बदलने का प्रयास करें (सही या ग़लत)
ftp_pasv($conn_id, TRUE); // इस मामले में निष्क्रिय मोड सक्षम है
ftp_mkdir($conn_id, "1/2/3"); // और फ़ोल्डर निर्माण स्वयं
}
}
ftp_close($conn_id); // और एफ़टीपी कनेक्शन बंद करें
?>
अब, कोड पर कोई बड़ी टिप्पणी नहीं।
पहली लाइन एफ़टीपी सर्वर से जुड़ती है। आमतौर पर, स्थानीय एफ़टीपी सर्वर से कनेक्ट करने के लिए, सर्वर के रूप में लोकलहोस्ट निर्दिष्ट करना पर्याप्त है, लेकिन आप पूरा पता भी निर्दिष्ट कर सकते हैं।
निष्क्रिय मोड सक्षम या अक्षम है या नहीं यह एफ़टीपी सेटिंग्स पर निर्भर करता है।

फ़ोल्डर बनाते समय सावधान रहें, फ़ोल्डर FTP लॉगिन रूट से बनाया गया है। यानी यहां के रास्ते, रास्तों से अलग हैं फाइल सिस्टमऔर जैसा कि FTP के माध्यम से देखा गया है, फ़ोल्डर बनाया गया है।
यदि कोई फ़ोल्डर बनाते समय आप कई अनुलग्नक निर्दिष्ट करते हैं, जैसा कि मेरे उदाहरण "1/2/3" में है, तो इस स्थिति में सभी लापता फ़ोल्डर बनाए जाएंगे। यदि कोई फ़ोल्डर "1" नहीं है, तो इसे बनाया जाएगा, और इसमें फ़ोल्डर "2" बनाया जाएगा, और इसमें फ़ोल्डर "3" बनाया जाएगा। यदि मध्यवर्ती फ़ोल्डर पहले से मौजूद हैं, तो केवल गायब फ़ोल्डर ही बनाए जाएंगे।
उदाहरण के लिए, फ़ोल्डर बनाने से पहले आप किसी फ़ोल्डर में जा सकते हैं


और इस फ़ंक्शन के बाद आप एक फ़ोल्डर बना सकते हैं। यदि फ़ोल्डर का पथ अग्रणी स्लैश के बिना "2/3" के रूप में निर्दिष्ट किया गया है, तो फ़ोल्डर उस फ़ोल्डर के सापेक्ष बनाया जाएगा जिसमें हम वर्तमान में स्थित हैं। यानी "1/2/3" फोल्डर बन जाएगा


यदि आप फ़ोल्डर बनाते समय एक अग्रणी स्लैश (/1/2/3) निर्दिष्ट करते हैं, तो फ़ोल्डर एफ़टीपी रूट से बनाया जाएगा, चाहे आप किसी भी फ़ोल्डर में चले गए हों।

टिप्पणियाँ

10/14/2009 सर्गेई
हर चीज़ सरल है :)

12.12.2009 विक्टर
धन्यवाद, सब कुछ काम करता है, लेकिन एफ़टीपी क्लाइंट में बनाए गए फ़ोल्डर तुरंत दिखाई नहीं देते हैं, आपको इसे पुनरारंभ करना होगा, यानी। केवल सर्वर से डिस्कनेक्ट न करें और फिर से कनेक्ट न करें, बल्कि प्रोग्राम को बंद करें और इसे फिर से चलाएं (मैं फाइलज़िला क्लाइंट का उपयोग करता हूं)।

12/14/2009 व्यवस्थापक
मैं सोचता हूं कि वही सबकुछ है एफ़टीपी ग्राहककैश फ़ाइलें और फ़ोल्डर्स। उदाहरण के लिए, टोटल कमांडर में ऐसे मामलों के लिए एक विशेष "अपडेट" बटन है; यह शर्म की बात है कि फाइलज़िला में यह नहीं है।

01/24/2010 अलेक्जेंडर
फ़ाइलज़िला में ऐसी कोई चीज़ क्यों नहीं है, मेरे पास संस्करण 3.2.2 है, यह पहले से ही लगभग एक वर्ष पुराना है और इसमें ऐसा फ़ंक्शन है और जहां तक ​​मुझे याद है यह हमेशा से रहा है!!!

08/27/2010 विटाली
फ़ोल्डर्स दाईं ओर 755 के साथ बनाए गए हैं, लेकिन आपको 777 की आवश्यकता है।
निर्माण चरण में, क्या किसी तरह यह कॉन्फ़िगर करना संभव है कि एफ़टीपी के माध्यम से फ़ोल्डर किन अधिकारों के साथ बनाया जाएगा?

08/27/2010 व्यवस्थापक
विटाली, इसके लिए एक फ़ंक्शन है
ftp_chmod($conn_id, 0777, $फ़ाइल)
फोल्डर या फाइल बनाने के बाद उसका उपयोग करें

08/28/2010 विटाली
धन्यवाद, व्यवस्थापक!

09/12/2010 एंड्री
क्षमा करें, मैं कई निर्देशिकाएँ क्यों नहीं बनाता, अर्थात्:

06/12/2011 इल्या
कुछ ठीक नहीं चल रहा है. सर्वर जारी करता है:
चेतावनी: ftp_close() को उम्मीद है कि पैरामीटर 1 संसाधन होगा, बूलियन लाइन 19 पर /home/bos/p/h/p/phpscripts/public_html/formf.php में दिया गया है

06/15/2011 विक्टर
इल्या, वह लिखते हैं कि ftp_close फ़ंक्शन के लिए आप जो पहला पैरामीटर पास कर रहे हैं वह सही नहीं है

06/29/2011 एलेक्सी
एंड्री जैसी ही समस्या
(एकाधिक निर्देशिकाएँ नहीं बनाई गई हैं)
ftp_mkdir ($conn_id, "1"); // यह इसी तरह काम करता है
लेकिन इस तरह ftp_mkdir ($conn_id, "1/2/3"); // काम नहीं करता।
???

07/27/2011 विक्टर
एलेक्सी, अजीब है, मैंने जाँच की, यह मेरे लिए कई फ़ोल्डर बनाता है।
हो सकता है कि सर्वर पर कुछ ट्रिकी मोड सक्षम हो, तो आपको एक-एक करके फ़ोल्डर्स बनाने की ज़रूरत है, पहले फ़ोल्डर 1 बनाएं, फिर इसे दर्ज करें और इसमें फ़ोल्डर 2 बनाएं, फिर फ़ोल्डर 2 दर्ज करें और इसमें 3 बनाएं...

11/07/2011 k1-801 (दिमित्री संभव है)
और जहाँ तक मैं समझता हूँ, फ़ोल्डरों को हटाने के लिए
rmdir_ftp($conn_id, $dir);
इसलिए?

और, वैसे, किसी कारण से यह मेरे लिए एक फ़ोल्डर नहीं बनाता है (और त्रुटियां नहीं लिखता है... अजीब...)

03/10/2012 वाईए
धन्यवाद, अन्यथा मैं इस प्रश्न से परेशान हो गया था।
और आप सब कुछ माफ कर देते हैं और मुख्य बात यह है कि यह काम करता है

05/29/2012 मिखाइल
निःसंदेह मुझे खेद है। मुझे यह कोड कहाँ लिखना चाहिए, अन्यथा मैं इसमें बिल्कुल भी अच्छा नहीं हूँ, लेकिन मुझे वास्तव में एक फ़ोल्डर बनाने की आवश्यकता है))

07/04/2012 नोमक
मेरे साथ कुछ गड़बड़ है... पहली बार कोड स्किप हो जाता है, दूसरी बार यह कहता है कि ऐसा फ़ोल्डर पहले से मौजूद है... ऐसा लगता है जैसे इसे बनाया जा रहा है, लेकिन एफ़टीपी को पुनरारंभ करने के बाद भी यह दिखाई नहीं दे रहा है((((
और साथ ही, मुझे एक फ़ोल्डर बनाना होगा, न कि उसी फ़ोल्डर में जहां PHP फ़ाइल है, बल्कि एक कदम पीछे जाना है, और फिर दूसरा फ़ोल्डर दर्ज करना है और उसे वहां बनाना है.. कुछ इस तरह:
../फ़ोल्डर1/नया फ़ोल्डर यहाँ
कृपया सहायता करें, यदि कठिन न हो) धन्यवाद)

07/04/2012 नोमक
मैंने तरीकों का पता लगा लिया))) लेख के लिए सामान्य तौर पर धन्यवाद, यह दुर्लभ है कि कोई ठीक से समझा सके कि कैसे है)))

01/27/2013 सिलिज़
शाबाश, लेख के प्रति सम्मान

06/05/2013 वसीली
कॉर्पोरेट फ़ोल्डर मुख्य तत्व है कॉर्पोरेट पहचानकंपनियां. यह छोटी मात्रा में दस्तावेज़ और कागज़ सामग्री संलग्न करने के लिए एक उत्पाद है। फ़ोल्डरों का उपयोग किसी कंपनी के भीतर, दस्तावेज़ों को संग्रहीत करने और स्थानांतरित करने के लिए, और विज्ञापन उद्देश्यों के लिए किया जाता है। वेबसाइट पर अधिक विवरण: www.logodesigner.ru/papki

टैग हटाएं (12)

मुझे ब्लूहोस्ट से वर्डप्रेस इंस्टॉलेशन के कई मामलों का सामना करना पड़ा है जहां मुझे अपने वर्डप्रेस थीम में त्रुटियों का सामना करना पड़ा क्योंकि अपलोड wp-content/uploads फ़ोल्डर गायब था।

जाहिरा तौर पर ब्लूहोस्ट cPanel WP इंस्टॉलर इस फ़ोल्डर को नहीं बनाता है, हालांकि HostGator बनाता है।

इसलिए मुझे अपनी थीम में कोड जोड़ने की ज़रूरत है जो फ़ोल्डर की जांच करता है और अन्यथा इसे बनाता है।

जवाब

ये कोशिश करें:

यदि (!file_exists("path/to/directory")) ( mkdir("path/to/directory", 0777, true); )

ध्यान दें कि 0777 पहले से ही निर्देशिकाओं के लिए डिफ़ॉल्ट मोड है और इसे अभी भी वर्तमान उमास्क द्वारा बदला जा सकता है।

वर्डप्रेस में एक बहुत ही उपयोगी फ़ंक्शन wp_mkdir_p भी है जो पुनरावर्ती रूप से एक निर्देशिका संरचना बनाएगा।

संदर्भ के लिए स्रोत:-

फ़ंक्शन wp_mkdir_p($target) ($wrapper = null; // प्रोटोकॉल को स्ट्रिप करें यदि(wp_is_stream($target)) ( सूची($wrapper, $target) = विस्फोट("://", $target, 2); ) // php.net/mkdir से उपयोगकर्ता ने नोट्स का योगदान दिया $target = str_replace('//', '/', $target); // रैपर को वापस लक्ष्य पर रखें if($wrapper !== null) ( $target ); = $wrapper . $target; ) // फ़ॉर्मेटिंग.php निर्भरता से बचने के लिए $target = rtrim($target, "/"); यदि (खाली($लक्ष्य)) $target = "/"; यदि (file_exists($target)) return @is_dir($target); वह मौजूद है और उसे प्राप्त करता है। " != $target_parent && ! is_dir($target_parent)) ( $target_parent = dirname($target_parent); ) // अनुमति बिट्स प्राप्त करें। यदि ($stat = @stat($target_parent)) ( $dir_perms = $stat[ "मोड"] और 0007777; ) अन्यथा ( $dir_perms = 0777; ) यदि (@mkdir($target, $dir_perms, true)) ( // यदि एक umask सेट किया गया है जो $dir_perms को संशोधित करता है, तो हमें" पुनः करना होगा $dir_perms को chmod() के साथ सही ढंग से सेट करें यदि ($dir_perms != ($dir_perms & ~umask())) ( $folder_parts = विस्फोट( "/", पदार्थ($target, strlen($target_parent) + 1));<= count($folder_parts); $i++) { @chmod($target_parent . "/" . implode("/", array_slice($folder_parts, 0, $i)), $dir_perms); } } return true; } return false; }

के लिए ($i = 1; $i

मुझे लॉगिन साइट के लिए भी इसकी आवश्यकता है। मुझे दो वेरिएबल्स वाली एक निर्देशिका बनाने की आवश्यकता थी। $ निर्देशिका मुख्य फ़ोल्डर है जहां मैं उपयोगकर्ता लाइसेंस नंबर के साथ एक और सबफ़ोल्डर बनाना चाहता था।

Include_once("../include/session.php"); $lnum = $session->lnum; //सत्रों से उपयोगकर्ता लाइसेंस संख्या $directory = upload_labels; // उस निर्देशिका का नाम जिसमें फ़ोल्डर बनाया जा रहा है यदि (!file_exists($directory.'/'$lnum)) ( mkdir($directory.'/.$lnum, 0777, true); )

कुछ अधिक सामान्य जैसा कि यह Google पर दिखाई देता है। हालाँकि विवरण अधिक विशिष्ट हैं, इस प्रश्न का शीर्षक अधिक सामान्य है।

/** * पुनरावर्ती रूप से एक लंबी निर्देशिका पथ बनाएं */ फ़ंक्शन createPath($path) ( यदि (is_dir($path)) सत्य लौटाता है; $prev_path = पदार्थ($पथ, 0, strrpos($पथ, "/", - 2) + 1); $रिटर्न = क्रिएटपाथ($prev_path); रिटर्न ($रिटर्न और is_writable($prev_path)) ?

एक स्टॉप लेवल प्रदान करके इसे बेहतर बनाया जा सकता है, इसलिए यदि यह उपयोगकर्ता के फ़ोल्डर या किसी चीज़ के बाहर जाता है तो यह विफल हो जाता है, और अनुमतियाँ सक्षम कर देता है।

यदि कोई फ़ोल्डर पहले से मौजूद नहीं है तो उसे बनाने के लिए

पर्यावरण मुद्दे पर विचार.

  • वर्डप्रेस.
  • वेब होस्टिंग सर्वर.
  • यह मानते हुए कि लिनक्स PHP नहीं चला रहा है।

बूल mkdir(स्ट्रिंग $pathname[, int $mode=0777[, bool $recursive=FALSE[, resource$context]]])

मैनुअल बताता है कि एकमात्र आवश्यक पैरामीटर $pathname है!

तो हम बस कोड कर सकते हैं:

स्पष्टीकरण:

हमें किसी भी पैरामीटर को पारित करने या यह जांचने की आवश्यकता नहीं है कि फ़ोल्डर मौजूद है या नहीं, या यदि आवश्यक हो तो ट्रांसफर मोड पैरामीटर भी; निम्नलिखित कारणों से:

  • कमांड 0755 (सार्वजनिक फ़ोल्डर के लिए डिफ़ॉल्ट अनुमति) या 0777, कमांड के लिए डिफ़ॉल्ट अनुमति के साथ एक फ़ोल्डर बनाएगा।
  • मोड को नजरअंदाज कर दिया गया है विंडोज़ होस्ट PHP चला रहा है .
  • यदि फ़ोल्डर मौजूद है तो mkdir कमांड में एक अंतर्निहित जांच होती है; इसलिए हमें केवल True | लौटाने के लिए जाँच करने की आवश्यकता है असत्य; और यह कोई त्रुटि नहीं है, यह केवल एक चेतावनी है, और चेतावनी डिफ़ॉल्ट रूप से होस्टिंग सर्वर पर अक्षम है।
  • गति के आधार पर यदि चेतावनी अक्षम है तो यह तेज़ है।

यह प्रश्न को देखने का एक और तरीका है न कि सर्वोत्तम या इष्टतम समाधान का दावा करने का।

PHP7, प्रोडक्शन सर्वर, लिनक्स पर परीक्षण किया गया

आप यह भी आज़मा सकते हैं:

$dirpath = "पथ/से/dir"; $मोड = "0777"; is_dir($dirpath) || mkdir($dirpath, $mode, true);

यदि (!is_dir("path_directory")) (@mkdir("path_directory"); )

फ़ोल्डर बनाने का तेज़ तरीका:

यदि (!is_dir("पथ/से/निर्देशिका")) ( mkdir("पथ/से/निर्देशिका", 0777, सत्य); )

आप करोगे

प्रिंटफ़('हाय %s,
", $नाम);

स्थापना से पहले कुकीज़, जो वर्जित है. आप हेडर से पहले कोई डेटा नहीं भेज सकते, यहां तक ​​कि एक खाली लाइन भी नहीं।

PHP में एक ही फ़ंक्शन है - mkdir(), जो आपको वेबसाइट सर्वर पर निर्देशिका बनाने की अनुमति देता है, जो कभी-कभी घर में बहुत आवश्यक होती है। उदाहरण के लिए, कोई नई सामग्री बनाते समय, आपको उसके लिए एक फ़ोल्डर बनाना होगा, जहां, फिर से अपने सीएमएस का उपयोग करके, आप सभी आवश्यक फ़ाइलें अपलोड करेंगे।

Mkdir('/path/to/my/dir', 0700);

वे। एक निश्चित निर्देशिका में हम एक नया फ़ोल्डर बनाते हैं और, उदाहरण के लिए, उसके मोड को मोड 0700 पर सेट करते हैं, उदाहरण के लिए, फ़ोल्डर में फ़ाइलें लिखने में सक्षम होने के लिए, हम मोड को 0777 में बदलते हैं।

लेकिन यहीं पर mkdir() के साथ समस्या उत्पन्न होती है। ऐसा करते समय php स्क्रिप्टजब सेफ_मोड सर्वर फ़ंक्शन सक्षम होता है, तो मालिक (यूआईडी) की जांच की जाती है और यदि स्क्रिप्ट और फ़ोल्डर का मालिक मेल नहीं खाता है, तो आप सक्षम नहीं हो सकते हैं, उदाहरण के लिए, बनाई गई निर्देशिका में एक फ़ाइल लिखने के लिए, एक को हटा दें इसमें फ़ाइल, या, उदाहरण के लिए, एफ़टीपी के माध्यम से आप फ़ोल्डर को स्वयं नहीं हटा पाएंगे।

लेकिन इस समस्या का एक और अधिक सुंदर समाधान है, होस्टर से आपके लिए सेफ_मोड फ़ंक्शन को अक्षम करने के लिए कहे बिना (सुरक्षा सुनिश्चित करने के लिए यह फ़ंक्शन डिफ़ॉल्ट रूप से सभी होस्टिंग साइटों पर सक्षम है)। मूल रूप से, सशुल्क होस्टिंग सेवाएँ ftp तक पहुंच भी प्रदान करती हैं, और हम यहीं से शुरुआत करेंगे।

$conn_ftp = @ftp_connect("your_ftp_server", 21, 5);

फ़ंक्शन में पहला वेरिएबल आपके एफ़टीपी सर्वर का पता है, दूसरा वह पोर्ट है जिस पर आप एफ़टीपी से कनेक्ट होते हैं और अंतिम अनुमत कनेक्शन टाइमआउट है। टाइमआउट के बारे में थोड़ा, यह बाद के नेटवर्क संचालन के लिए आवश्यक है, यदि आप इसे दर्ज नहीं करते हैं, तो डिफ़ॉल्ट मान 90 सेकंड पर सेट है। कनेक्शन के बाद, हम जांचते हैं कि क्या यह सफल रहा और लॉगिन और पासवर्ड भेजें:

यदि($conn_ftp) // कनेक्शन सफल रहा ( $login_result = @ftp_login($conn_ftp, "user", "pass"); // FTP के लिए अपना लॉगिन और पासवर्ड दर्ज करें यदि($login_result) // लॉगिन और पासवर्ड सत्यापन पारित हो गया सफलता(ftp_pasv($conn_ftp, TRUE);))

लॉगिन और पासवर्ड की जांच करने के बाद, हमें निष्क्रिय मोड पर निर्णय लेने और इसे सही या गलत पर सेट करने की आवश्यकता है - यह आवश्यक है यदि आगे एफ़टीपी फ़ंक्शन सही ढंग से काम नहीं करेंगे। अब निष्क्रिय मोड को परिभाषित करने के बाद, हम अपने फ़ोल्डर्स बना सकते हैं, मैं उन सभी कार्यों का वर्णन करूंगा जो भविष्य में आपके लिए उपयोगी हो सकते हैं:

$फ़ाइल = ftp_mkdir($conn_ftp, "public_html/सामग्री/345"); // सामग्री फ़ोल्डर में निर्देशिका 345 बनाना, यदि सामग्री फ़ोल्डर मौजूद नहीं है, // यह भी बनाया जाएगा, public_html फ़ोल्डर के साथ भी ऐसा ही है (यह निर्देशिका // इंगित की गई है ताकि आप संपूर्ण पथ देख सकें, अन्यथा यह है) साइट के साथ बस एक फ़ोल्डर) ftp_chdir($conn_ftp, "public_html/materials"); //यदि आपके पास निश्चित रूप से एक सामग्री फ़ोल्डर है, तो आपको पूरा //पथ लिखने की ज़रूरत नहीं है, आप बस पहले उस पर जा सकते हैं और फिर //निम्नलिखित कोड ftp_mkdir ($conn_ftp, का उपयोग करके उसमें एक फ़ोल्डर 345 बना सकते हैं, "345") ftp_chmod($ conn_ftp, 0777, $फ़ाइल); //सभी फ़ोल्डर डिफ़ॉल्ट रूप से मोड 0755 के साथ बनाए जाते हैं, यह कमांड आपको //इसे 0777 में बदलने की अनुमति देगा, जो आपको बनाए गए फ़ोल्डर में फ़ाइलें जोड़ने की अनुमति देगा।

अब मैं कामकाजी कोड का एक पूरा उदाहरण दूंगा ताकि आप देख सकें कि यह कैसा दिखता है, उदाहरण के लिए, मेरा:

$dir_name = समय(); //यहां मैं स्क्रिप्ट लॉन्च होने के समय के आधार पर फ़ोल्डर का नाम बनाता हूं $conn_ftp = @ftp_connect("your_ftp_server", 21, 5); if($conn_ftp) // कनेक्शन सफल रहा ( $login_result = @ftp_login($conn_ftp, "user", "pass"); // FTP के लिए अपना लॉगिन और पासवर्ड दर्ज करें यदि($login_result) // लॉगिन और पासवर्ड सत्यापन पारित हो गया सफलता ( ftp_pasv ($conn_ftp, TRUE); ftp_chdir ($conn_ftp, "public_html/materials"); ftp_mkdir ($conn_ftp, $dir_name); ftp_chmod($conn_ftp, 0777, $dir_name); ) )

बनाते समय निर्देशिकाओं को निर्दिष्ट करने के बारे में भी कुछ कहना उचित है; यदि आप शुरुआत में एक स्लैश निर्दिष्ट करते हैं, तो फ़ोल्डर एफ़टीपी रूट के सापेक्ष बनाया जाएगा। एफ़टीपी सर्वर से कनेक्ट करते समय आप हमेशा रूट से कनेक्ट होते हैं, इसलिए इसे ध्यान में रखें।