2012-08-09 25 views
14

मैंने इंटरनेट पर शोध करने के लिए दिन बिताए हैं और मुझे वह जवाब नहीं मिल रहा है जिसे मैं समझूंगा और इसे लागू करने में सक्षम हूं।PHP के लिए रूट फ़ोल्डर कैसे सेट करें फ़ाइलें

मुझे वह वेबसाइट मिली है जिसमें मैं include_once फ़ाइलों का उपयोग करना चाहता हूं और स्थानीयहोस्ट और वास्तविक सर्वर दोनों में वेबसाइट को ठीक से देखने में सक्षम हूं।

मैंने पहले $_SERVER['DOCUMENT_ROOT'] का उपयोग किया है, लेकिन यह स्थानीयहोस्ट पर काम नहीं करता है इसलिए मेरे लिए अद्यतन करना और वेबसाइट में बदलाव करना मुश्किल है।

मैं कुछ करना चाहता हूं config.php फ़ाइल बनाने के लिए जिसमें मैं यह कह सकता हूं कि रूट फ़ोल्डर को या तो htdocs या public_html कहा जाता है और वहां से फ़ाइलों को ढूंढने के लिए "प्रारंभ" करने के लिए।

या क्या कोई अन्य तरीका है जिसमें मैं काम करने के पथ शामिल कर सकता हूं?

मैंने उदाहरण के साथ जवाब देखा है dirname(__FILE__), __DIR__, आदि, लेकिन उन्होंने कभी समझाया कि यह कैसे काम करेगा, इसे कोड में कहां लिखना है, आदि। मैं थोड़ी बीमार हूं और उत्तर के हिस्से को ढूंढने से थक गया हूं और फिर सर्कल में घूम रहा हूं बस कोशिश करें और "भरें अंतराल में। मैं एक PHP विशेषज्ञ नहीं हूं, बस इसका उपयोग करके अपने जीवन को थोड़ा आसान बनाने की कोशिश कर रहा हूं।

+0

आप किसी भी ढांचे का उपयोग कर रहे हैं या अपने परियोजना कच्चे php है? –

उत्तर

28

dirname(__FILE__) और __DIR__ दोनों एक ही और __DIR__ PHP के साथ आता है 5.3

इन्हें इंगित करने के लिए उपयोग किया जाता है कि "फ़ाइल का पथ जहां उन्होंने कहा था"।

 
URL: http://localhost/test/a.php 

DIR: --NIX 
    /var/www/test/a.php 
    --WIN 
    D:\lamp\www\test\a.php 

// a.php's inside 
<?php 
echo __DIR__; 

लिनक्स पर आप इस देता है: /var/www/test

इसलिए, यदि आप अपने सभी परियोजना में एक config पैरामीटर की आवश्यकता होगी, बस अपने config.php में यह परिभाषित करने और इसका इस्तेमाल करते हैं, जहां आप दोनों फ़ाइल नाम चाहते हैं कि शामिल होगा।

 
./ 
    config.php 
    index.php 
    header.php 
    footer.php 
    /lib 
    foo.php 
    /tmp 
    bar.php 

./config.php define('ROOT', __DIR__ .'/');

./index.php include_once(ROOT .'header.php'); ... include_once(ROOT .'footer.php');

यानी

, में tmp dir

./tmp/bar इसे का उपयोग।php include_once(ROOT .'lib/foo.php');

अद्यतन

// config.php 
<?php 
define("ROOT", __DIR__ ."/"); 

तो, हम banner.php और banner.php./banners/banner.php में इंतज़ार कर रहा है शामिल करने के लिए index.php के लिए इस का उपयोग करें;

// index.php and the very first line! 
<?php 
include_once("config.php"); 
?> 
// some html stuff 
// ... 
<?php include_once(ROOT ."banners/banner.php"); ?> 
// some more html stuff 
// ... 

तो, आपको config.php को सबसे पहले जहां आपको इसकी आवश्यकता हो, शामिल करना चाहिए।

मुझे लगता है, इस जहाँ तक के लिए आवश्यक बुनियादी है ...

अद्यतन

तो आपकी समस्या include प्रणाली है, लेकिन सवाल है, वैसे भी पीएचपी नहीं है ... :)

यदि आपका छवि पथ बदल रहा है (इसलिए तय नहीं है), तो आप ऐसा कर सकते हैं;

// config.php 
define("ROOT", __DIR__ ."/"); 
define("HTTP", ($_SERVER["SERVER_NAME"] == "localhost") 
    ? "http://localhost/your_work_folder/" 
    : "http://your_site_name.com/" 
); 

// banner.php 
<img src="<?php print HTTP; ?>images/banner.gif"> 
+0

मैं इस विधि का प्रयास करना और उपयोग करना चाहता हूं लेकिन मुझे यह सही नहीं लगता है। क्या आपको लगता है कि आप मुझे उदाहरण दे सकते हैं कि config.php कैसे ठीक तरह दिखता है? जो मैं कोशिश कर रहा हूं वह त्रुटियों को दिखाता है और काम नहीं करता है। इसके अलावा, अगर मेरे पास उदा। छवियों के साथ banner.php वहाँ उनके लिए सही रास्ता क्या होगा? /images/img01.jpg या छवियों/img01.jpg: पी – Vetaxili

+0

ठीक है, अद्यतन pls देखें। –

+0

काम पूरी तरह से धन्यवाद देता है :) मुझे छवियों को विभिन्न निर्देशिका स्तरों पर काम करने में समस्या है। – Vetaxili

0

getcwd() नामक एक फ़ंक्शन है जो वर्तमान कार्य फ़ोल्डर को वापस कर देगा। यदि आप इसे अपनी स्क्रिप्ट की शुरुआत में कहते हैं, तो आप इसे आमतौर पर define() के साथ स्थिर में संग्रहीत कर सकते हैं।

define('PROJECT_ROOT', getcwd()); 
3

मैं सामान्य रूप से आप क्या उल्लेख किया है, एक में शामिल हैं निर्देशिका में config.php की स्थापना की, और उस में निम्न पंक्ति है: define('BASE_PATH', str_replace('/include', '', dirname(__FILE__))); ("/ शामिल होना चाहिए जो कुछ भी निर्देशिका अपने config.php फाइल में है, अगर आप रूट निर्देशिका में यह है, तो आप सिर्फ define('BASE_PATH', dirname(__FILE__)); उपयोग कर सकते हैं) जब मैं उस के बाद किसी भी अन्य फाइल शामिल करना चाहते हैं, मैं include_once(BASE_PATH . '/directory/file.php'); का उपयोग

ध्यान दें:।। इस अवधारणा नहीं मूल मेरे लिए किसी भी तरह से है

0

मिल/वर्तमान काम निर्देशिका प्रदर्शित करने के लिए php कि

echo getcwd() . "\n"; 

इस के लिए एक builtin समारोह अपने php फ़ाइल के वर्तमान निर्देशिका है जो अब निष्पादित किया जा रहा प्रदर्शित करेगा है।

0

तुम भी बदल सकते हैं पथ, उदा में शामिल हैं,

$dir = dirname(__FILE__); 
set_include_path($dir . '/../library' . PATH_SEPARATOR . $dir . '/../engine' . PATH_SEPARATOR . get_include_path()); 
संबंधित मुद्दे