2009-07-16 15 views
27

बयान वर्तमान में अपनी साइट पर मैं उपयोग कर रहा हूँ में PHP के include_path के पथ संलग्न करने के लिए। मुझे यकीन है कि ऐसा करने का एक बेहतर तरीका है।कैसे की तरह .htaccess

मुझे विश्वास है कि .htaccess समाधान है, लेकिन मुझे यकीन नहीं है कि इसे कार्यान्वित करने के बारे में कैसे जाना है। अगर मैं सम्मिलित करें:

php_value include_path "public/html/root" 

... मैं अपने पथ (/usr/lib/php, आदि) के बाकी खो देते हैं। मैंने नैतिक कोशिश की:

php_value include_path $include_path . "(path)" 

लेकिन निश्चित रूप से यह काम नहीं किया। मैं .htaccess के साथ इस सूची में एक एकल पथ कैसे प्रीपेड या जोड़ सकता हूं?

उत्तर

22

आप php.ini फ़ाइल स्वयं संपादित नहीं कर सकते, तो आप अपने include बयान से पहले

set_include_path(get_include_path() . PATH_SEPARATOR . $path_to_add); 

जोड़ सकते हैं।

हालांकि अगर आपको include या require परेशानीएं मिलती हैं, तो शायद यह एक कोड गंध है। सबसे अच्छा समाधान एक अच्छा ऑब्जेक्ट उन्मुख डिजाइन होगा जो एक अच्छे __autoload फ़ंक्शन के साथ होगा।

+0

दुर्भाग्यवश मैं अभी कई अन्य साइटों के साथ एक सर्वर पर हूं ... मैं प्रत्येक फ़ाइल में path_to_add नहीं रखना चाहता क्योंकि यह कुछ अजीब/घर/12345678/public_html जैसा है ... मैं ' डी बस "public_html" को सबसे सरल तरीके से पथ में शामिल करने के लिए जोड़ना पसंद है। एक खोज करना और स्थानांतरित होने पर प्रतिस्थापित करना लगता है। – zildjohn01

+0

क्या आप वर्तमान php 'include_path' को 'php_info()' या 'get_include_path()' के साथ देख सकते हैं और फिर php_value include_path" public/html/root:/first/old/path:/second/old/path " आपके '.htaccess' पर। आपको केवल एक बार ऐसा करना होगा। – Otterfan

+0

सच है, लेकिन मैं एक और अधिक सुरुचिपूर्ण समाधान की उम्मीद कर रहा था। उम्मीद है कि वे जल्द ही सर्वर को फिर से कॉन्फ़िगर नहीं करेंगे। वैसे भी मदद के लिए धन्यवाद, यह संभवतः यह सबसे अच्छा हो सकता है। – zildjohn01

27

उप उप-निर्देशिका में सामग्री

php_value include_path '../../includes' 

या जो कुछ भी include_path कि निर्देशिका के लिए सही है के साथ एक फ़ाइल .htaccess बनाएँ।

लाभ:

  1. कई के साथ कोई बदसूरत हैक अलग गहराई के साथ शामिल हैं। बस include 'head.php'
  2. php.ini संपादन पर कोई निर्भरता नहीं।
  3. शामिल होने से पहले set_include_path() का उपयोग करने की आवश्यकता नहीं है।
  4. include INCLUDE_PATH . 'head.php' जैसे स्थिरांक सहित कोई निर्भरता नहीं।

मूल्य भुगतान करने के लिए:

आप कूड़े अपने एक फ़ाइल .htaccess साथ प्रत्येक उप-उप-निर्देशिका।

+2

मुझे यह पसंद है, और स्पष्ट रूप से स्पष्ट लाभ और लागत के साथ लेखन की सराहना करते हैं। मुझे कड़वाहट पसंद नहीं है, लेकिन मैं कर रहा हूँ। धन्यवाद! :) –

+0

ज़ेंड फ्रेमवर्क –

+1

के साथ बहुत उपयोगी मैं इस विधि को बहुत पसंद करता हूं क्योंकि ए) यह मेरे एप्लिकेशन के लॉजिक (मेरे 'set_include_path()' कॉल से मेरे एप्लिकेशन की कॉन्फ़िगरेशन को अस्वीकार करता है), फिर भी मेरे एप्लिकेशन की कॉन्फ़िगरेशन मेरे एप्लिकेशन के भीतर बनी हुई है और बी) यह decouples मेरे एप्लिकेशन के कॉन्फ़िगरेशन से मेरे एप्लिकेशन की कॉन्फ़िगरेशन ('php.ini' या' httpd.conf' या जो भी हो) में कोई बदलाव नहीं है। निश्चित रूप से, प्रति वेब अनुरोध प्रति निर्देशिका एक अतिरिक्त पढ़ने के ऑपरेशन से आप "पीड़ित" होंगे, लेकिन क्या? एक मामूली आकार के PHP ऐप में प्रत्येक अनुरोध पर दर्जन या अधिक PHP शामिल होंगे, जब तक कि इसे स्क्रिप्ट जॉइनर जैसी किसी चीज़ के माध्यम से प्रोड पर तैनात नहीं किया जाता है। –