2012-05-10 13 views
10

मैं एक स्क्रिप्ट है कि एक फ़ोल्डर से एक औरsymlink'd PHP स्क्रिप्ट के वर्तमान निर्देशिका और नहीं वास्तविक PHP स्क्रिप्ट मिल

/var/www/default/index.php 

जो

/var/www/mysite/index.php 

सांकेतिक रूप से लिंक है सांकेतिक रूप से लिंक किया गया है हालांकि जब मैं कॉल डीआईआर mysite से पथ डिफ़ॉल्ट रूप से मूल पथ पर हल हो जाता है। (सांकेतिक रूप से लिंक फ़ोल्डर, न कि वास्तविक फ़ोल्डर) कैसे मैं इसे mysite पथ वापसी करते वेब सर्वर के लिए

+0

आप यह देखने के लिए 'var_dump ($ _ SERVER) 'हो सकते हैं कि पथ पथ में से कोई भी पथ आपके पास है या नहीं eeding। – drew010

उत्तर

13

का अनुरोध करता है

dirname ($ _ सर्वर [ 'SCRIPT_FILENAME']) आप दे देंगे कि तुम क्या जरूरत है। उस $ _SERVER ['PHP_SELF'] या यहां तक ​​कि REQUEST_URI में विफल होने पर यह होगा।

CLI (कमांड लाइन) के लिए

इस CLI में (कमांड लाइन) काम नहीं करेगा $ _SERVER के रूप में स्क्रिप्ट वेब सर्वर द्वारा जोड़ा जाता है।

सौभाग्य से यह क्ली स्क्रिप्ट के साथ बहुत आसान है (क्योंकि चीजों के साथ गड़बड़ करने के लिए कोई वेब सर्वर नहीं है)।

आपको स्क्रिप्ट शुरू करने वाली कमांड लाइन को पढ़ने की आवश्यकता है: http://php.net/manual/en/reserved.variables.argv.php। पहला तर्क $ argv [0] हमेशा वह नाम होता है जिसका उपयोग स्क्रिप्ट चलाने के लिए किया जाता था।

+0

आपके सुझाव के लिए धन्यवाद रॉबी। आपने जो कहा वह प्रयोग करके मैं इस के साथ आया जो वेब और क्ली दोनों के लिए काम करता था। परिभाषित करें ('रूट', डायरनाम ($ _ सर्वर ['SCRIPT_FILENAME']); –

+0

आपका स्वागत है। यह पुष्टि करने के लिए धन्यवाद कि यह काम किया। – Robbie

+0

अच्छा समाधान, रॉबी। क्या आप _dir_name_ में टाइपो को ठीक कर सकते हैं (_dirname_ होना चाहिए) – Peter

0

यदि आप क्ली स्क्रिप्ट के पूर्ण अनसुलझे सिस्टम पथ की तलाश में हैं, तो SCRIPT_PATH अपर्याप्त होगा।

php -f symlink/script.php 

SCRIPT_FILENAME शामिल होंगे सिमलिंक/script.php

मैं एक php/सार है कि gets the unresolved path to the php file.

यहाँ समारोह का परिणाम है बनाया है:

$ php -f subdir/mysymlink/subdir/mysymlink/subdir/mysymlink/app.php 
PWD: /tmp/phpcode                   
SCRIPT_FILENAME: subdir/mysymlink/subdir/mysymlink/subdir/mysymlink/app.php     
___FILE__ : /tmp/phpcode/app.php                
getSymlink(): /tmp/phpcode/subdir/mysymlink/subdir/mysymlink/subdir/mysymlink