13 महीने बाद, मैं अपने सवाल पर फिर से विचार करना चाहता था। उस समय में मैंने आईआईएस 6 से आईआईएस 7.5 तक आधा दर्जन वेबसाइटें स्थानांतरित की हैं और उन्हें अपनी पसंदीदा विधि से कॉन्फ़िगर किया है। मैं केवल इतना कह सकता हूं कि वेबसाइटें काम करती हैं, उनके पास कोई सुरक्षा समस्या नहीं थी (यह नहीं कि ये लोकप्रिय साइटें हैं), और मेरी राय में सेटअप क्या सीखता है की तुलना में अधिक सुरक्षित है।
पोस्टीरिटी के लिए, यहां प्रासंगिक सेटिंग्स हैं। PHP INI में:
cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 0
IIS में:
- अनुप्रयोग पूल> पहचान> ApplicationPoolIdentity
- वेबसाइट> प्रमाणीकरण> अनाम प्रमाणीकरण> विशिष्ट उपयोगकर्ता: IUSR
NTFS अनुमतियाँ और उन्हें कहाँ लागू करना है:
- IUSR - अनुदान पढ़ें, इनकार लिखें
- IIS वेबसाइट की रूट डायरेक्टरी। उदाहरण के लिए, Zend फ्रेमवर्क परियोजना में यह / सार्वजनिक निर्देशिका होगी।
- यदि आपका आवेदन फाइलों को अपलोड करता है और उन्हें एक सार्वजनिक निर्देशिका में सहेजता है, तो आपको इस अनुमति को अस्थायी अपलोड निर्देशिका में लागू करना होगा। ऐसा इसलिए है क्योंकि
move_uploaded_file
अपलोड निर्देशिका की अनुमतियों को संरक्षित करेगा। यह इस अनुमति सेटअप का सबसे बड़ा दोष है जो मुझे मिला है।
- ApplicationPoolIdentity (
IIS AppPool\<<YourApplicationPoolName>>
) - अनुदान पढ़ें और सूची
- अपने PHP आवेदन की जड़। उदाहरण के लिए, Zend फ्रेमवर्क परियोजना में यह पूरी परियोजना होगी।
- आपके एप्लिकेशन द्वारा शामिल कोई भी बाहरी लाइब्रेरी (Zend, Doctrine, आदि) जो एप्लिकेशन फ़ोल्डर में नहीं हैं।
- ApplicationPoolIdentity - अनुदान संशोधित करें
- किसी भी स्थान जहां आपके आवेदन जैसे लिखेंगे
upload_tmp_dir
, session.save_path
और error_log
।
- कभी-कभी मुझे अपने विकास के वातावरण में PHP एप्लिकेशन की जड़ में इस अनुमति को जोड़ने की आवश्यकता है ताकि डॉक्ट्रिन की ऑटो-जनरेशन की भविष्यवाणियों जैसी चीजों का समर्थन किया जा सके ।
- ApplicationPoolIdentity - अनुदान सूची
- यदि आपका आवेदन एक आभासी निर्देशिका में है, तो आपको इस अनुमति को वेबसाइट की जड़ में जोड़ना होगा। यह आपके एप्लिकेशन को इसके मूल web.config को पढ़ने की अनुमति देता है। उदाहरण के लिए, यदि आपकी एप्लिकेशन रूट http://example.com/MyPHPApp है , तो इस अनुमति को example.com वेब निर्देशिका पर सेट करें। विशेष रूप से आपको केवल "यह फ़ोल्डर और फ़ाइलें", "केवल इस कंटेनर के भीतर" को लागू करने की आवश्यकता है।
मुझे उम्मीद है कि यह किसी और की मदद करता है जो यह तय करता है कि learn.iis.net निर्देश आदर्श नहीं हैं।