Mod_php क्या है?


108

एक Zend ट्यूटोरियल से गुजरते हुए , मैं निम्नलिखित कथन पर आया:

ध्यान दें कि .htaccess में php_flag सेटिंग्स तभी काम करती हैं जब आप mod_php का उपयोग कर रहे हों।

क्या कोई समझा सकता है कि इसका क्या मतलब है?

जवाबों:


158

mod_phpPHP का मतलब है, अपाचे मॉड्यूल के रूप में

मूल रूप से, जब mod_phpअपाचे मॉड्यूल के रूप में लोड होता है, तो यह अपाचे को PHP फ़ाइलों (उन द्वारा व्याख्या की गई mod_php) की व्याख्या करने की अनुमति देता है ।


संपादित करें: कर रहे हैं (कम से कम) पीएचपी चल के दो तरीके हैं, जब अपाचे के साथ काम:

  • CGI का उपयोग करना : Apache द्वारा एक PHP प्रक्रिया शुरू की जाती है, और यह PHP प्रक्रिया है जो PHP कोड की व्याख्या करती है - Apache ही नहीं
  • एक अपाचे मॉड्यूल के रूप में 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)


मैंने php, Apache और mysql पैकेज को स्थापित करने के लिए xampp का उपयोग किया ... तो, मेरा सेटअप क्या होगा?
SpikETidE

यदि PHP वर्तमान में काम नहीं कर रहा है तो आपको इसे सक्षम करना चाहिए। यदि PHP पहले से ही काम कर रहा है, तो इसे CGI का उपयोग करना होगा, जिस स्थिति में आपको संभवतः मॉड्यूल को सक्षम करने से अधिक करने की आवश्यकता होगी। मॉड्यूल सिस्टम पर भी मौजूद नहीं हो सकता है।
d11wtq

1
हाँ..!। जब मैं phpinfo चलाते हैं () मुझे लगता है कि mod_php5 भरी हुई मॉड्यूल अनुभाग में शामिल है .... और इसका मतलब है कि मैं इसे एक अपाचे मॉड्यूल के रूप में चल रहा है ... सही है?
SpikETidE

3
mod_phpअब तक सबसे आम विन्यास है।
troelskn

@ पास्कल, मैं कहूँगा mod_phpअसली PHP नहीं है; यह सिर्फ एक अपाचे addon है। या बल्कि, मुझे लगता है कि आपको उत्तर की परिभाषा के साथ शुरू करना चाहिए कि वास्तव में PHP का क्या मतलब है?
22

58

यह उत्तर 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 संस्करण को बेहतर बनाता है यदि आप बहुत सी नई सेटिंग्स का परीक्षण कर रहे हैं और त्वरित प्रतिक्रियाएँ देखना चाहते हैं।


@JohannEchavarria, जब तक आपने बहुत सारे पागल सामान नहीं जोड़े हैं, सर्वर को पुनरारंभ करने में केवल कुछ सेकंड लगेंगे। SSD के साथ "सामान्य" आधुनिक प्रणालियों के लिए यह 2 सेकंड से कम है।
पचेरियर

12

आपके सर्वर को 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 को निर्दिष्ट करने से दूसरों को विशेष रूप से जवाब देने में मदद मिलेगी।


5

इसका अर्थ है कि आपको PHP को Apache स्क्रिप्ट के रूप में शुरू करने के बजाय Apache में एक मॉड्यूल के रूप में स्थापित करना होगा।


3

बस इन उत्तरों को जोड़ने के लिए, mod_php PHP का उपयोग करने के लिए HTTPD सर्वर में उपलब्ध सबसे पुराना और सबसे धीमा तरीका है। यह अनुशंसित नहीं है, जब तक कि आप Apache HTTPD और PHP के पुराने संस्करण नहीं चला रहे हैं। php-fpm औरxy_cgi पसंदीदा तरीके हैं।


0

mod_php एक PHP दुभाषिया है।

डॉक्स से, mod_php की एक महत्वपूर्ण पकड़ है,

"mod_php थ्रेड सुरक्षित नहीं है और आपको प्रीफ़ॉर्क mpm (मल्टी प्रोसेस, नो थ्रेड्स) से चिपके रहने के लिए मजबूर करता है, जो सबसे धीमा संभव कॉन्फ़िगरेशन है"

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.