2012-01-11 17 views
5

आमतौर पर, जब PHP से एक http स्थिति हैडर भेजने, एक HTTP शीर्ष लेख इस तरह भेजना होगा:एफसीजीआई के लिए 'स्थिति: 404 नहीं मिला' का उपयोग करने के लिए अभी भी आवश्यक है?

header("HTTP/1.0 404 Not Found"); 

हालांकि, PHP manual का कहना है कि FCGI मेजबान के लिए, एक एक "स्थिति" शीर्ष लेख भेजने की जरूरत है कि तो FCGI मॉड्यूल द्वारा एक HTTP शीर्ष लेख में बदल जाता है:

header("Status: 404 Not Found"); 

मैं PHP के साथ Apache 2.2 चला रहा हूँ एक विंडोज 7 मशीन पर mod_fcgi का उपयोग करने और का उपयोग कर हैडर भेजने सिर्फ header("HTTP/1.0 404 Not Found"); ठीक से काम करने लगता है।

क्या यह हाल ही में बदला गया है? क्या मुझे अभी भी एफसीजीआई होस्ट के लिए Status शीर्षलेख भेजने की आवश्यकता है? क्या कोई अन्य प्लेटफार्मों (सौरिस, लिनक्स) और अन्य वेबसर्वर (nginx, lighttp) के लिए भी इसकी पुष्टि कर सकता है?

उत्तर

3

मुझे विश्वास नहीं है कि आपको 'स्थिति' शैली शीर्षलेख का उपयोग करने की आवश्यकता नहीं है जब तक कि आपके पास cgi.rfc2616_headers सक्षम विकल्प न हो। ।

उस विकल्प का वर्णन http://php.net/manual/en/ini.core.php

है "पीएचपी हेडर किस प्रकार जब HTTP प्रतिक्रिया भेजने कोड का उपयोग करने के लिए कहता यह 0 सेट है, तो PHP एक स्थिति भेजता है: कि अपाचे के द्वारा समर्थित है हैडर और अन्य वेब सर्वर। जब यह विकल्प 1 पर सेट होता है, तो PHP »आरएफसी 2616 अनुपालन शीर्षलेख भेजें। इसे 0 पर सेट करें जब तक कि आप जो भी कर रहे हैं उसे नहीं जानते।"

मूल रूप से आप HTTP स्टाइल हेडर को PHP पर भेज रहे हैं और फिर PHP आवश्यकतानुसार 'स्थिति' शैली शीर्षलेख में परिवर्तित हो जाता है। ऐसा लगता है कि पिछले कुछ वर्षों में विभिन्न बग थे जहां या तो इन्हें या तो गलत तरीके से परिवर्तित किया गया था या कई 'स्थिति' शीर्षलेख एक बार में भेजे गए थे - हालांकि उन सभी बग्स को अभी ठीक किया जाना प्रतीत होता है। तो मुझे लगता है कि आप केवल HTTP स्टाइल हेडर सेट कर सुरक्षित हैं और PHP को उन्हें परिवर्तित करने देते हैं।

इसके अलावा मैंने अभी भी हेडर का परीक्षण किया और भेज दिया ("HTTP/1.0 404 नहीं मिला"); FastCGI

का उपयोग कर मेरे देव पर्यावरण पर ठीक काम करता है
संबंधित मुद्दे