2012-05-10 25 views
10

bensymlink'd php script geçerli dizini değil gerçek php script olsun

/var/www/mysite/index.php 

sembolik olarak başka

/var/www/default/index.php 

bir klasörden diğerine sembolik olarak bir senaryomuz var ancak zaman ben mysite'den DIR numaralı telefonu arayın, yol varsayılan olarak orijinal yoluna gider. Web Sunucusu için ben mysite yolunu dönmek yapmak yapmak nasıl (sembolik olarak klasör değil, gerçek klasör)

+0

Yol değişkenlerinden herhangi birinin n olduğunuz yolu içerip içermediğini görmek için var_dump ($ _ SERVER) olabilir. eeding. – drew010

cevap

13

dirname istekleri ($ _ SERVER [ 'SCRIPT_FILENAME']) Eğer ihtiyacın olanı verecektir. $ _SERVER ['PHP_SELF'] ve hatta REQUEST_URI 'nin bunu yapamayacak olması.

CLI (komut satırı) için

bu cli (komut satırı) çalışmayacaktır $ _SERVER olarak komut web sunucusu tarafından eklenir.

Neyse ki, cli script'lerle çok daha kolay (şeylerle uğraşmak için web sunucusu olmadığı için).

Tek ihtiyacınız olan komut dosyasını başlatan komut satırını okumaktır: http://php.net/manual/en/reserved.variables.argv.php. İlk argüman $ argv [0] her zaman betiği çalıştırmak için kullanılan addır.

+0

Öneriniz için teşekkürler robbie. Ne dediğinizi kullanarak, hem web hem de cli için çalıştım. define ('ROOT', dirname ($ _ SERVER ['SCRIPT_FILENAME'])); –

+0

Rica ederim. Çalıştığını teyit ettiğiniz için teşekkürler. – Robbie

+0

Güzel çözüm, Robbie. Yazım hatası _dir_name_ (_dirname_ olmalıdır) lütfen düzeltin – Peter

0

Bir kod betiğinin tam çözümlenmemiş yolunu arıyorsanız, SCRIPT_PATH yetersiz olacaktır. içerecektir

php -f symlink/script.php 

SCRIPT_FILENAMEsembolik bağı/script.php Ben burada

gets the unresolved path to the php file. fonksiyonun sonucu olan bir php/özünü oluşturmuş

:

$ 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