2011-03-06 20 views
5

यह समस्या अभी भीनिरपेक्ष फ़ाइल पथ

एक वीडियो पीएचपी ट्यूटोरियल मैं अनुसरण कर रहा हूं एक फ़ाइल initialize.php कहा जाता है जिसमें यह पीएचपी पूर्व-निर्धारित निरंतर Directory_Separator का उपयोग कर और फिर एक site_root को परिभाषित बनाने जा रहा है हल नहीं किया गया है। साइट_रूट PHP फ़ाइल के लिए पूर्ण फ़ाइल पथ (वेबसर्वर पथ नहीं है) को की फ़ाइलों का पता लगाने के लिए है। वह हमें निम्नलिखित कोड

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR); 

    defined('SITE_ROOT') ? null : 
    define ('SITE_ROOT', DS.'Users'.DS.'kevin'.DS.'Sites'.DS.'photo_gallery'); 

मैं अपने कंप्यूटर पर फ़ाइल पथ संभालने हूँ दिया जड़/उपयोगकर्ताओं/केविन/साइटों/फोटोगैलरी है

मैं अपने कंप्यूटर पर साइट का निर्माण नहीं कर रहा हूँ, बल्कि सीधे ऑनलाइन । मुझे नहीं पता कि इसके बजाय डालने के लिए फ़ाइल पथ क्या है।

जैसा कि उन्होंने जोर दिया कि यह वेबसर्वर पथ नहीं है, बल्कि फाइल सिस्टम पथ है, मैं इसके बजाय क्या रखूं। बस इस तरह का डोमेन नाम।

define('SITE_ROOT', DS. 'www.example.com'); 

वह वेबसर्वर पथ नहीं चाहता है लेकिन फाइलें ऑनलाइन स्थित हैं? तो मुझे यह नहीं मिला।

अद्यतन

वीडियो ट्यूटोरियल निम्नलिखित कोड

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR); 

defined('SITE_ROOT') ? null : 
define ('SITE_ROOT', DS.'Users'.DS.'kevin'.DS.'Sites'.DS.'photo_gallery'); 
defined('LIB_PATH') ? null : define('LIB_PATH',SITE_ROOT.DS.'includes'); 

मैं इस कोड का इस्तेमाल किया प्रयोग किया है:

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR); 

defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__))); 
defined('LIB_PATH') ? null : define('LIB_PATH',SITE_ROOT.DS.'includes'); 

मैं इस त्रुटि संदेश मिला

require_once(/hsphere/local/home/c263430/quoralist.com/includes/includes/config.php): failed to open stream: No such file or directory in /hsphere/local/home/c263430/quoralist.com/includes/initialize.php on line 11 Fatal error: require_once(): Failed opening required '/hsphere/local/home/c263430/quoralist.com/includes/includes/config.php' (include_path='.:/hsphere/shared/apache/libexec/php5ext/php/') in /hsphere/local/home/c263430/quoralist.com/includes/initialize.php on line 11

अद्यतन experimentX से नीचे 3 संपादन का उपयोग कर, और साथ ही निम्न

define('SITE_ROOT', DS.'hsphere'.DS.'local'.DS.'home'.DS.'c263430'.DS.'quoralist.com'); 

मैं हमेशा त्रुटि संदेश

Warning: require_once(LIB_PATH/config.php): failed to open stream: No such file or directory in /hsphere/local/home/c263430/quoralist.com/includes/initialize.php on line 11 Fatal error: require_once(): Failed opening required 'LIB_PATH/config.php' (include_path='.:/hsphere/shared/apache/libexec/php5ext/php/') in /hsphere/local/home/c263430/quoralist.com/includes/initialize.php on line 11

इसके अलावा,

+0

वीडियो के लिंक = हे – Joseadrian

+0

जोड़े यह ऑनलाइन, खेद – Leahcim

+0

Micahel मैं जवाब –

उत्तर

10

मिला कैसे के बारे में

defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__))); 

echo SITE_ROOT; 

define('SITE_ROOT', 'www.domain.com') के बजाय आपको चाहिए define('SITE_ROOT', realpath(dirname(__FILE__))

www.domain.com आधार यूआरएल (आपकी साइट का) है जबकि realpath(dirname(__FILE__)) FILE का पूर्ण फ़ाइल पथ है जहां इसे परिभाषित किया गया है। इस पथ का उपयोग करके, आप अपनी साइट के लिए एक रूट फ़ोल्डर स्थापित कर सकते हैं।

उदाहरण के लिए: आप unlink('www.example.com\img1.jpg') कर ऐसे ही चल img1

नष्ट करने के लिए आप unlink(SITE_ROOT.DS.'img1.jpg') करना चाहिए;

इसी तरह move_uploaded_file या किसी अन्य निर्देशिका या फ़ाइल फ़ंक्शन के लिए। यानी आपकी फ़ाइलों को सर्वर कंप्यूटर द्वारा स्थानांतरित और हटाया जा रहा है (क्योंकि PHP में PHP स्क्रिप्ट निष्पादित की जाती है), इसलिए पूर्ण फ़ाइल पथ आवश्यक है।

इस पूर्ण पथ का उपयोग करके, आप फ़ोल्डर पर नेविगेट कर सकते हैं और सर्वर पर फ़ाइलों तक पहुंच सकते हैं।

[अद्यतन]

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR); 

defined('SITE_ROOT') ? null : 
    define ('SITE_ROOT', DS.'Users'.DS.'kevin'.DS.'Sites'.DS.'photo_gallery'); 

हालांकि मैं ऐसा नहीं कर खुद मैक, web-rootUsers/kevin/Sites/ मैक पर है और Users/kevin/Sites/photogallery साइट जड़ है।

शिक्षक यह जानता है इसलिए वह ऐसा कर रहा है। लेकिन जब हम हमारी परियोजना वेबसर्वर में अपलोड की जाती हैं, तो हम शायद यह नहीं जानते हैं, इसलिए

defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__))); 

सबसे उपयुक्त होगा।

और DS तक, यह केवल एक CONSTANT (DIRECTORY_SEPARATOR) है, जिसे परिभाषित किया गया है क्योंकि DIRECTORY_SEPARATOR लिखने में बहुत लंबा होगा। अर्थात

SITE_ROOT'.DIRECTORY_SEPARATOR.'Users'.DIRECTORY_SEPARATOR.'kevin'.DIRECTORY_SEPARATOR.'Sites'.DIRECTORY_SEPARATOR.'photo_gallery' 

तो, इसे परिभाषित करने से पहले आप साइट रूट परिभाषित

defined('DS')? null: define('DS', DIRECTORY_SEPARATOR); 
defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__))); 

के रूप में ट्यूटोरियल मैक पर किया जाता है DIRECTORY_SEPARATOR/ है। और नमूना localhost पर किया जाता है, तो वह ट्यूटर

कर रही है उसके वेबसर्वर के पूर्ण फ़ाइल पथ जानता है: क्योंकि includes/initialize.php पर इस परिभाषित मानता है कि [त्रुटि अद्यतन]

आपको यह त्रुटि मिल अपने अपने SITE_ROOTyourwebroot/yourproject/includes है जहां यह yourwebroot/yourproject/includes होना चाहिए।

वहाँ दो तरीके हैं, एक ही रास्ता

yourwebroot/yourproject

में initialize.php डाल करने के लिए है और दूसरी तरह के

defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__)).DS."..".DS); 

या

defined('SITE_ROOT')? null: define('SITE_ROOT', DS.'..'.DS.realpath(dirname(__FILE__))); 

है (मुझे यकीन है कि नहीं कर रहा हूँ लेकिन उनमें से एक काम करना चाहिए)

इसके अलावा इस

defined('SITE_ROOT')? null: define('SITE_ROOT', '/../'.realpath(dirname(__FILE__))); 
+0

आपको बहुत बहुत धन्यवाद। मैं एक नौसिखिया हूँ। क्या आप थोड़ा और समझा सकते हैं। क्या मुझे अपने वास्तविक डोमेन नाम में अपने उदाहरण में प्रतिस्थापित करना है? जैसे कि SITE_ROOT = www.example.com (डायरनाम (__ FILE__))? या मैं यह कैसे करूँगा। यदि आप और अधिक मदद कर सकते हैं तो बहुत सराहना की। कृपया मुझे यह दिखाने के लिए अपना उत्तर संपादित करें कि डोमेन कहां जाता है। – Leahcim

+0

@ मिचल यहां यह जाता है ... 5 मिनट –

+0

के बाद मुझे कभी भी अपने वास्तविक डोमेन नाम www.example.com का उपयोग नहीं करना पड़ेगा? क्या वे शब्द "realpath" "dirname" आदि PHP शब्द हैं जो किसी भी तरह से मेरा डोमेन नाम पिकअप करते हैं? – Leahcim

1

खेद

photograph.php में

दिखाई नहीं दे रहा इमेजेज के लिए जवाब है, मेरे पास है कोशिश, बस हटाने के डी एस

public function image_path() { 
    return $this->upload_dir.$this->filename; 
} 

काम कर लाइन है:

defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__)).DS."..".DS); 

धन्यवाद!

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