2008-08-23 17 views
18

मैं PHP सेट कर सकते हैं php.ini में पथ में शामिल हैं:प्रति साइट आधार पर PHP शामिल पथ सेट करना?

include_path = /path/to/site/includes/ 

लेकिन फिर अन्य वेबसाइटों प्रभावित कर रहे हैं ताकि कोई अच्छा है।

मैं PHP सेट कर सकते हैं हर फ़ाइल की शुरुआत में शामिल हैं:

$path = '/path/to/site/includes/'; 
set_include_path(get_include_path() . PATH_SEPARATOR . $path); 

लेकिन वह बुरा व्यवहार और clutters बातें की तरह लगता है।

तो मैं एक बात का शामिल कर सकते हैं और उसके बाद हर फ़ाइल में शामिल हैं:

include 'includes/config.php'; 

या

include '../includes/config.php'; 

यह अभी मैं क्या कर रहा है, लेकिन का पथ शामिल config.php इसमें शामिल होने के आधार पर बदल जाएगा।

क्या कोई बेहतर तरीका है? फर्क पड़ता है क्या?

उत्तर

16

यदि आप वेबसर्वर के रूप में अपाचे का उपयोग कर रहे हैं तो आप का उपयोग कर ओवरराइड कर सकते हैं (अगर आप इसे अनुमति देते हैं)। Htaccess फ़ाइलें। विवरण के लिए the PHP manual देखें।

असल में आप अपनी वेबसाइट रूट में .htaccess नामक एक फ़ाइल डालते हैं, जिसमें कुछ PHP ini मान होते हैं। बशर्ते आप ओवरराइड की अनुमति देने के लिए अपाचे कॉन्फ़िगर करें, यह साइट आपके PHP कॉन्फ़िगरेशन में सभी मानों का उपयोग करेगी, + में निर्दिष्ट मानों का उपयोग करेगा। Htaccess फ़ाइल।

PHP_INI_ALL और PHP_INI_PERDIR प्रकार निर्देशों

के रूप में पेज मैं जुड़ा हुआ में कहा गया है साथ ही इस्तेमाल किया जा सकता। यदि आप पूर्ण सूची में क्लिक करते हैं, तो आप देखते हैं कि पथ शामिल है PHP_INI_ALL निर्देश।

0

आप अपनी php.ini फ़ाइल में भी include_path सेट कर सकते हैं। मैं एक पर्ल लड़का हूं, इसलिए मैं लोड करने में सक्षम होने की उम्मीद करता हूं और include सही काम करता हूं। मेरे पास सब कुछ एक विशिष्ट निर्देशिका में शामिल है, जिसे include_path में जोड़ा गया है। मैं

require_once "ClassName.php"; 

जैसी चीजें कर सकता हूं मुझे संबंधित पथों या फ़ाइलों के स्थानों के बारे में चिंता करने की आवश्यकता नहीं है।

मैं भी इस तरह मैं बदल सकते हैं कि कैसे मैं एक बाद की तारीख में भी शामिल है की तरह

function CustomRequire ($file) { 
    if(defined('MYINCLUDEPATH')) { 
     require_once MYINCLUDEPATH . "/$file"; 
    } else { 
     require_once $file; 
    } 
} 

मेरे अपने CustomRequire करने के लिए चीजों को लिखा है। बेशक, आपको अभी भी अपना शामिल कोड शामिल करने का एक तरीका ढूंढना होगा :)

+0

देखने क्यों dissing @ गैरी का जवाब कर रहे हैं? मेरी राय में एसओ पर यहां एक बुरी आदत - टिप्पणी अनुभाग में इसे समझाए बिना "असीमित ज्ञान" * से टिप्पणियों को कम करना। – amn

+0

मेह। यह आपके लिए PHP है। मैं अभी भी इस प्रणाली का उपयोग कर रहा हूं और यह एपीसी प्रदर्शन के साथ बहुत अच्छा काम करता है। यदि आप कर सकते हैं, एक ऑटोलोडर का उपयोग करें। एक ऑटो लोडर के साथ समस्या यह है कि यदि आप फ़ाइल सिस्टम पर अपने वर्ग लेआउट में किसी प्रकार की संरचना चाहते हैं (उदाहरण के लिए http://www.php.net/manual/en/language) तो आपको अपने वर्ग के नामों को बेस्टर्ड करना होगा। oop5.autoload.php # 49,496)। मुझे बेहतर विकल्प सुनना अच्छा लगेगा! –

+0

गैरी, मैंने केवल यह बताया कि लोग इस पर टिप्पणी किए बिना सामान कैसे कम करते हैं। जहां तक ​​मेरा संबंध है, आपका जवाब वैध है। – amn

1

आपके होस्ट की स्थापना के तरीके के आधार पर, आपको अतिरिक्त कॉन्फ़िगरेशन निर्देशों के साथ आपकी होम निर्देशिका की रूट में php.ini फ़ाइल रखने की अनुमति दी जा सकती है ।

7

एरिक वान ब्रैकेल ने आईएमएचओ को सबसे अच्छे उत्तरों में से एक दिया।

अधिक है, तो आप अपाचे & आभासी मेजबान का उपयोग कर रहे हैं, तो आप सेट कर सकते हैं उन में सीधे शामिल है। इस विधि का उपयोग करके, आपको अपने .htaccess में php_admin कमांड छोड़ना याद रखना होगा।

4

अगर अपने सेटअप सर्वर चौड़ा php.ini रूप में एक ही वाक्य रचना के साथ सीजीआई (साझा होस्ट पर सबसे अक्सर मामले) के रूप में पीएचपी का उपयोग करता वेबसाइट जड़ में एक php.ini फ़ाइल का उपयोग करें; यह .htaccess में डाल दिया है, तो आप (एक phpinfo करना() यदि अनिश्चित) एक अपाचे मॉड्यूल के रूप में पीएचपी है:

php_value include_path "जहाँ भी"

ध्यान दें कि प्रति-फ़ोल्डर php.ini सबफ़ोल्डर को प्रभावित करता है नहीं करता है।

+0

'php_value include_path" /var/www/somesite.com/include_path/ "' – velcrow

1

आपका आवेदन एक config PHP में लिखा फ़ाइल होनी चाहिए। फिर प्रोग्राम में प्रत्येक पृष्ठ में एक सापेक्ष पृष्ठ के साथ शामिल करें। यही कारण है कि कॉन्फ़िग फ़ाइल आदि पथ के लिए निर्देशिका, टेम्पलेट्स dir, छवियों निर्देशिका में शामिल हैं के लिए एक चर,

3

तुम क्यों शामिल करने के लिए पथ बुरा व्यवहार है संलग्न लगता है होगा? एक मैंने देखा:

जड़ स्क्रिप्ट के शीर्ष के निकट इस कोड है कि बुरा नहीं होना चाहिए ...

$path = '/path/to/site/includes/'; 
set_include_path($path . PATH_SEPARATOR . get_include_path()); 

IMHO मुख्य लाभ यह है कि यह पोर्टेबल और संगत न केवल अपाचे

साथ

संपादित है इस विधि की कमी: छोटे प्रदर्शन प्रभाव। http://www.geeksengine.com/article/php-include-path.html

+0

अलावा प्रदर्शन प्रभाव आप का उल्लेख है, जब मैं इस सवाल का मैं कई अलग फ़ाइलों के साथ एक साइट पर काम कर रहा था पूछा और एक भी जड़ स्क्रिप्ट से जो सभी अनुरोध निर्देशित हैं। – Annan

संबंधित मुद्दे