NameVirtualHosts का उपयोग करके मैं LAMP सर्वर पर प्रति-साइट php.ini फ़ाइलों को कैसे सेट करूँ?


10

मेरे पास एक LAMP सर्वर है जो NameVirtualHosts का उपयोग करके कई अलग-अलग वेबसाइटों की सेवा कर रहा है ।

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

मुझे पूरा यकीन है कि मैंने सुना है कि आप प्रति-साइट आधार पर php.ini फाइलें सेट कर सकते हैं, लेकिन यह नहीं जानते कि यह कैसे करना है।

क्या कोई मुझे सही दिशा में इंगित कर सकता है कि इसे कैसे पूरा किया जाए?

जवाबों:


14

अधिकांश सेटिंग्स जो आप अपने php.ini में रखेंगे , उन्हें उस साइट के लिए .htaccess या Apache कॉन्फ़िगरेशन में भी रखा जा सकता है । उदाहरण के लिए मेरे एक वर्चुअल होस्ट का यह .htaccess में है

    php_value display_errors 1
    php_value register_globals 0
    php_value short_open_tag 0
    php_value magic_quotes_runtime 0
    php_value magic_quotes_gpc 0
    php_value session.name "PHPSESSID_SITEBLAH"
    php_value session.gc_maxlifetime 57600
    php_value session.gc_probability 1
    php_value session.gc_divisor 500

यह मेरे लिए काम नहीं लगता है। क्या इसे अनुमति देने के लिए मास्टर php.ini में किसी प्रकार के निर्देश की आवश्यकता है?
ब्रेंट

1
"AllowOverride विकल्प" या "AllowOverride All" को इस काम के लिए APache कॉन्फ़िगरेशन में सेट किया जाना चाहिए।
स्टैकक्रिश

उदाहरण के लिए, मान apache.confआपकी php.iniफ़ाइल में, या आसपास के अन्य तरीके से अधिलेखित होगा ?
PUK

7

आप अपाचे कॉन्फ़िगरेशन फ़ाइल (httpd.conf / apache.conf) में कॉन्फ़िगरेशन सेटिंग्स भी निर्दिष्ट कर सकते हैं। आपके मामले में आप संदर्भ के भीतर कॉन्फ़िगरेशन मान निर्दिष्ट कर सकते हैं।

वर्चुअल होस्ट example.com के लिए निम्न उदाहरण को upload_max_filesize को 10M पर सेट करना चाहिए।

<VirtualHost *>
    ServerName example.com
    DocumentRoot /path_to_docroot
    php_value upload_max_filesize 10M
    php_admin_flag allow_url_fopen on
</VirtualHost>

यदि आप संपूर्ण साइट के लिए यह मान सेट नहीं करना चाहते हैं, लेकिन एक विशेष निर्देशिका में जहां एप्लिकेशन रहता है, तो आप ए के भीतर मान निर्दिष्ट कर सकते हैं।

<VirtualHost *>
   ServerName example.com
   DocumentRoot /path_to_docroot
  <Location /testApp/>
     php_value upload_max_filesize 10M
     php_admin_flag allow_url_fopen on
  </Location>
</VirtualHost>

अधिक स्पष्टीकरण के लिए http://php.net/manual/en/configuration.changes.php देखें ।


+1 अजीब बात है, कुछ और काम नहीं किया। स्थानीय htaccess, php ini फाइलें, उनमें से कोई भी काम नहीं किया।
बूट 13

धन्यवाद! हो सकता है कि किसी को इस मुद्दे के बारे में पता हो कि मॉड-सिक्योरिटी मापदंडों को ओवरराइट करने की आवश्यकता है। यह केवल vhost लेवल पर काम करता है न कि DIRECTORY या LOCATION लेवल में। कारण यह है कि निर्देशिका या स्थान ब्लॉक पढ़ने से पहले मॉड-सेकंड को कॉन्फ़िगर किया जा रहा है।
ora-600

1

एक अन्य सुझाव आधुनिक फास्टैगी या मॉड-एफसीजी का उपयोग करना है, जो पीएचपी को एक अलग स्टैंडअलोन डेमॉन के रूप में चलाते हैं। फिर, प्रत्येक वेबसाइट के लिए, आप एक अलग उपयोगकर्ता और php.ini config फाइल को परिभाषित कर सकते हैं।


1

फिर भी एक और विकल्प suPHP है जो आपको प्रत्येक VirtualHost के लिए php.ini को परिभाषित करने की अनुमति देता है। यह भी आप प्रत्येक VirtualHost के लिए एक PHP संस्करण निर्दिष्ट करने की अनुमति देता है।

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