एक Zend ट्यूटोरियल से गुजरते हुए , मैं निम्नलिखित कथन पर आया:
ध्यान दें कि .htaccess में php_flag सेटिंग्स तभी काम करती हैं जब आप mod_php का उपयोग कर रहे हों।
क्या कोई समझा सकता है कि इसका क्या मतलब है?
एक Zend ट्यूटोरियल से गुजरते हुए , मैं निम्नलिखित कथन पर आया:
ध्यान दें कि .htaccess में php_flag सेटिंग्स तभी काम करती हैं जब आप mod_php का उपयोग कर रहे हों।
क्या कोई समझा सकता है कि इसका क्या मतलब है?
जवाबों:
mod_php
PHP का मतलब है, अपाचे मॉड्यूल के रूप में ।
मूल रूप से, जब mod_php
अपाचे मॉड्यूल के रूप में लोड होता है, तो यह अपाचे को PHP फ़ाइलों (उन द्वारा व्याख्या की गई mod_php
) की व्याख्या करने की अनुमति देता है ।
संपादित करें: कर रहे हैं (कम से कम) पीएचपी चल के दो तरीके हैं, जब अपाचे के साथ काम:
mod_php
) : PHP दुभाषिया फिर अपाचे प्रक्रिया के अंदर "एम्बेडेड" की तरह है: कोई बाहरी PHP प्रक्रिया नहीं है - जिसका अर्थ है कि अपाचे और PHP बेहतर संवाद कर सकते हैं ।
और टिप्पणी के बाद फिर से संपादित करें : CGI का उपयोग करना या mod_php
आप पर निर्भर है: यह केवल आपके वेबसर्वर के विन्यास की बात है।
आपके सर्वर पर वर्तमान में किस तरह का उपयोग किया जाता है, यह जानने के लिए, आप इसका आउटपुट चेक कर सकते हैं phpinfo()
: कुछ संकेत होना चाहिए कि क्या PHP mod_php
(या mod_php5
) या CGI के माध्यम से चल रहा है ।
आप php_sapi_name()
फ़ंक्शन पर एक नज़र डालना चाहते हैं : यह वेब सर्वर और पीएचपी के बीच इंटरफ़ेस का प्रकार लौटाता है ।
यदि आप अपाचे की कॉन्फ़िगरेशन फ़ाइलों की जांच करते हैं, तो उपयोग करते समय mod_php
, LoadModule
इस तरह दिखने वाली एक पंक्ति होनी चाहिए :
LoadModule php5_module modules/libphp5.so
(फ़ाइल नाम, दाईं ओर, भिन्न हो सकता है - विंडोज पर, उदाहरण के लिए, यह होना चाहिए .dll
)
mod_php
अब तक सबसे आम विन्यास है।
mod_php
असली PHP नहीं है; यह सिर्फ एक अपाचे addon है। या बल्कि, मुझे लगता है कि आपको उत्तर की परिभाषा के साथ शुरू करना चाहिए कि वास्तव में PHP का क्या मतलब है?
यह उत्तर TuxRadar से लिया गया है :
अपने वेब सर्वर के माध्यम से PHP चलाते समय, दो अलग-अलग विकल्प होते हैं: PHP के CGI SAPI का उपयोग करके इसे चलाना, या इसे वेब सर्वर के लिए मॉड्यूल के रूप में चलाना। प्रत्येक के अपने फायदे हैं, लेकिन, कुल मिलाकर, मॉड्यूल आमतौर पर पसंद किया जाता है।
PHP को CGI के रूप में चलाने का अर्थ है कि आप मूल रूप से अपने वेब सर्वर को PHP की निष्पादन योग्य फ़ाइल का स्थान बताते हैं, और सर्वर उस निष्पादन योग्य को चलाता है, जिससे वह आपके द्वारा लिखी गई स्क्रिप्ट, हर बार जब आप किसी पृष्ठ पर जाते हैं। इसका मतलब है कि हर बार जब आप कोई पृष्ठ लोड करते हैं, तो PHP को php.ini को पढ़ना पड़ता है और इसकी सेटिंग सेट करनी होती है, इसके सभी एक्सटेंशन को लोड करने की आवश्यकता होती है, और फिर इसे स्क्रिप्ट को पार्स करने का काम शुरू करने की आवश्यकता होती है - बहुत बार-बार काम करना पड़ता है।
जब आप PHP को एक मॉड्यूल के रूप में चलाते हैं, तो PHP सचमुच आपके वेब सर्वर के अंदर बैठता है - यह केवल एक बार शुरू होता है, इसकी सेटिंग्स और एक्सटेंशन को केवल एक बार लोड करता है, और सत्रों में जानकारी संग्रहीत भी कर सकता है। उदाहरण के लिए, PHP एक्सेलेरेटर PHP पर निर्भर करता है जो अनुरोधों में कैश्ड डेटा को बचाने में सक्षम होता है, जो CGI संस्करण का उपयोग करना असंभव है।
PHP को मॉड्यूल के रूप में उपयोग करने का स्पष्ट लाभ गति है - यदि आप CGI से किसी मॉड्यूल में परिवर्तित करते हैं तो आपको एक बड़ी गति को बढ़ावा मिलेगा। कई लोग, विशेष रूप से विंडोज उपयोगकर्ता, इसे महसूस नहीं करते हैं, और php.exe CGI SAPI का उपयोग करते हैं, जो शर्म की बात है - मॉड्यूल आमतौर पर तीन से पांच गुना तेज है।
CGI संस्करण का उपयोग करने का एक महत्वपूर्ण लाभ है, हालांकि, और यह है कि हर बार जब आप पृष्ठ लोड करते हैं, तो PHP इसकी सेटिंग्स को पढ़ता है। PHP को एक मॉड्यूल के रूप में चलाने के साथ, आप php.ini फ़ाइल में कोई भी बदलाव तब तक नहीं करते हैं जब तक आप अपने वेब सर्वर को पुनरारंभ नहीं करते हैं, जो कि CGI संस्करण को बेहतर बनाता है यदि आप बहुत सी नई सेटिंग्स का परीक्षण कर रहे हैं और त्वरित प्रतिक्रियाएँ देखना चाहते हैं।
आपके सर्वर को php मॉड्यूल इंस्टॉल करने की आवश्यकता है ताकि यह php कोड को पार्स कर सके।
यदि आप ubuntu पर हैं, तो आप आसानी से ऐसा कर सकते हैं
sudo apt-get install apache2
sudo apt-get install php5
sudo apt-get install libapache2-mod-php5
sudo /etc/init.d/apache2 restart
अन्यथा आप php के साथ अपाचे को संकलित कर सकते हैं: http://dan.drydog.com/apache2php.html
अपने सर्वर OS को निर्दिष्ट करने से दूसरों को विशेष रूप से जवाब देने में मदद मिलेगी।
इसका अर्थ है कि आपको PHP को Apache स्क्रिप्ट के रूप में शुरू करने के बजाय Apache में एक मॉड्यूल के रूप में स्थापित करना होगा।