PHP fopen() फ़ंक्शन

विनिर्धारण और उपयोग

fopen() फ़ंक्शन फ़ाइल या URL को खोलता है。

यदि खोलना विफल होता है, तो इस फ़ंक्शन से FALSE वापस किया जाता है。

व्याकरण

fopen(फ़ाइलनाम,mode,include_path,कॉन्टेक्स्ट)
पारामीटर वर्णन
फ़ाइलनाम अनिवार्य। खोलने के लिए फ़ाइल या URL को निर्धारित करता है。
mode अनिवार्य। फ़ाइल/स्ट्रीम को खोलने के लिए आवश्यकता के प्रकार को निर्धारित करता है। संभावित मान नीचे की तालिका में दिए गए हैं。
include_path वैकल्पिक। यदि include_path में फ़ाइल को भी ढूंढना है, तो इस पारामीटर को 1 या TRUE रख सकते हैं。
कॉन्टेक्स्ट वैकल्पिक। फ़ाइल हैंडल के वातावरण को निर्धारित करता है। Context एक ऐसा सेट विकल्प है जो अनुवाव के व्यवहार को संशोधित कर सकता है。

mode पारामीटर के संभावित मान

mode बताता है
"r" केवल पढ़ने के लिए खोलें, फ़ाइल पॉइंटर को फ़ाइल के सामने की ओर बढ़ाएं।
"r+" पढ़ने और लिखने के लिए खोलें, फ़ाइल पॉइंटर को फ़ाइल के सामने की ओर बढ़ाएं।
"w" लिखने के लिए खोलें, फ़ाइल पॉइंटर को फ़ाइल के सामने की ओर बढ़ाएं और फ़ाइल का आकार शून्य कर दें। यदि फ़ाइल नहीं मौजूद है, तो उसे बनाने की कोशिश करें।
"w+" पढ़ने और लिखने के लिए खोलें, फ़ाइल पॉइंटर को फ़ाइल के सामने की ओर बढ़ाएं और फ़ाइल का आकार शून्य कर दें। यदि फ़ाइल नहीं मौजूद है, तो उसे बनाने की कोशिश करें।
"a" लिखने के लिए खोलें, फ़ाइल पॉइंटर को फ़ाइल के अंत की ओर बढ़ाएं। यदि फ़ाइल नहीं मौजूद है, तो उसे बनाने की कोशिश करें।
"a+" पढ़ने और लिखने के लिए खोलें, फ़ाइल पॉइंटर को फ़ाइल के अंत की ओर बढ़ाएं। यदि फ़ाइल नहीं मौजूद है, तो उसे बनाने की कोशिश करें।
"x"

फ़ाइल को बनाएं और लिखने के लिए खोलें और फ़ाइल पॉइंटर को फ़ाइल के सामने की ओर बढ़ाएं। यदि फ़ाइल पहले से ही मौजूद है, तो fopen() कॉल विफल होगी और FALSE वापस करेगी, और एक E_WARNING स्तर का एररर संदेश बना देगी। यदि फ़ाइल नहीं मौजूद है, तो उसे बनाने की कोशिश करें।

यह बैठकीया रूप से ओपन(2) सिस्टम कॉल को O_EXCL|O_CREAT टैग से निर्दिष्ट करने के बराबर है।

इस विकल्प को PHP 4.3.2 और आगे की संस्करणों द्वारा समर्थित है और यह केवल स्थानीय फ़ाइलों के लिए इस्तेमाल किया जा सकता है।

"x+"

सृजित और रख-दर्जा करने के लिए खोला जाएगा, फ़ाइल पॉइंटर को फ़ाइल के शीर्ष पर बदला जाएगा। यदि फ़ाइल पहले से ही मौजूद है, तो fopen() बुलावट असफल होगी और FALSE वापस करेगी, और E_WARNING स्तर का एक त्रुटि संदेश जारी करेगा। यदि फ़ाइल मौजूद नहीं है, तो इसे सृजित करने की कोशिश की जाएगी।

यह बैठकीया रूप से ओपन(2) सिस्टम कॉल को O_EXCL|O_CREAT टैग से निर्दिष्ट करने के बराबर है।

इस विकल्प को PHP 4.3.2 और आगे की संस्करणों द्वारा समर्थित है और यह केवल स्थानीय फ़ाइलों के लिए इस्तेमाल किया जा सकता है।

बताता है

fopen() फ़ाइल खोलने के लिए फ़ाइलनाम संदिग्ध नाम संसाधन को एक स्ट्रीम पर बांधा जाता है। यदि फ़ाइलनाम है "scheme://..." के रूप में फ़ॉर्मेट, तो इसे एक URL के रूप में माना जाएगा और PHP इस मोड को संसाधन प्रोसेसर (जिसे भी एनकाप्सुलेटिंग प्रोटोकॉल कहा जाता है) को खोजकर इस मोड को संसाधित करेगा। यदि इस प्रोटोकॉल को एनकाप्सुलेटिंग प्रोटोकॉल के रूप में पंजीकृत नहीं किया गया है, तो PHP एक संदेश जारी करेगा ताकि स्क्रिप्ट में संभावित समस्याओं की जांच करने के लिए मदद की जा सके और फ़ाइलनाम एक सामान्य फ़ाइल नाम के रूप में जारी रहे।

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

यदि PHP को लगता है कि फ़ाइलनाम एक पंजीकृत प्रोटोकॉल है और यह पंजीकृत एक नेटवर्क URL के रूप में है, PHP इसे जांच करेगा और allow_url_fopen को सक्रिय करने की पुष्टि करेगा। यदि यह बंद कर दिया गया है, तो PHP एक चेतावनी जारी करेगा और fopen की बुलावट असफल होगी।

के लिए कॉन्टेक्स्ट का समर्थन PHP 5.0.0 में जोड़ा गया था।

सूचना और टिप्पणी

टिप्पणी:विभिन्न ऑपरेटिंग सिस्टम परिवारों के पास अलग-अलग लाइन अंत आदतें हैं। एक टेक्स्ट फ़ाइल लिखते समय और नई पंक्ति जोड़ने के लिए चाहते हैं, तो उस ऑपरेटिंग सिस्टम के अनुसार लाइन अंत चिह्न का इस्तेमाल करना आवश्यक है। यूनिक्स के आधारित सिस्टम \n को लाइन अंत चिह्न के रूप में इस्तेमाल करते हैं, विंडोज के आधारित सिस्टम \r\n को लाइन अंत चिह्न के रूप में इस्तेमाल करते हैं, और मैकिंटॉश के आधारित सिस्टम \r को लाइन अंत चिह्न के रूप में इस्तेमाल करते हैं। यदि फ़ाइल में गलत लाइन अंत चिह्न का इस्तेमाल किया गया है, तो अन्य अनुप्रयोग इन फ़ाइलों को खोलने के दौरान अनूठा व्यवहार कर सकते हैं।

विंडोज में एक पाठ परिवर्तन टैग ("t") उपलब्ध है जो \n को \r\n में पारदर्शी रूप से बदल सकता है। इसके लिए आवश्यकता है कि आप या तो "b" या "t" को mode पारामीटर के अंतिम अक्षर के रूप में इस्तेमाल करें।

डिफ़ॉल्ट ट्रांसफ़ॉर्मेशन मोड एसएपीआई और इस्तेमाल किए जाने वाले PHP संस्करण पर निर्भर करता है, इसलिए बदलावी के लिए, हमेशा सही चिह्न निर्दिष्ट करने की सिफ़ारिश की जाती है।यदि आपको शुद्ध पाठ फ़ाइलों को हाथ करना है और आपको इन फ़ाइलों को अन्य अनुप्रयोगों जैसे Notepad द्वारा पढ़ा जाना चाहिए, तो mode में "t" का उपयोग करें।अन्य सभी मामलों में "b" का उपयोग करें।

द्वारा बाइनरी फ़ाइलों को हाथ करते समय अगर "b" चिह्न नहीं दिया गया है, तो कुछ अजीब समस्याएँ आ सकती हैं, जिनमें खराब हो गए छवि फ़ाइलों और \r\n अक्षरों की अजीब समस्याएँ शामिल हैं。

टिप्पणी:बदलावी के लिए, आग्रह करते हैं कि आप fopen() को खोलने के दौरान हमेशा "b" चिह्न का उपयोग करें。

टिप्पणी:फिर से, बदलावी के लिए, आग्रह करते हैं कि आप उन कोडों को फिर से लिखें जो "t" मोड के उपर निर्भर करते हैं और सही पाठ समाप्तकर्ताओं का उपयोग करके "b" मोड में बदल दें。

उदाहरण

<?php
$file = fopen("test.txt","r");
$file = fopen("/home/test/test.txt","r");
$file = fopen("/home/test/test.gif","wb");
$file = fopen("http://www.example.com/","r");
$file = fopen("ftp://user:password@example.com/test.txt","w");
?>