2011-09-05 20 views
10

Bildiğim kadarıyla, php'nin getcwd() (ve benzer işlevler örneğin dirname(__FILE__)) yürütülmekte olan dosyanın geçerli dizinini döndürmesi beklenir. php getcwd() şu anki dizin yerine sembolik linkin hedefini çözer

geçerli dizin başka dizine sembolik köprü, (muhtemelen apache ile birlikte) php olması durumda

'dizinde' içindesin olarak Sembolik bağ adını gösteren yolunu dönmek gerekiyordu.

Örnek :

from /var/www, 
directory 'one' contains index.php 
symlink 'two' points at directory 'one' 

one/index.php: <?php echo getcwd(); ?> 

bir tarayıcıda http://localhost/two/index.php erişme /var/www/one göstermektedir.

Ben bu degisebilirim bir php veya apache ayarı ise /var/www/two

bilen var mı göstermesini bekliyoruz ki? Yoksa symlinleri bu şekilde kullanamıyorum mu?

+1

kullanarak çözdünüz mü? Aynı kullanım davasıyla ilgileniyorum. – kalenjordan

+0

Apache symLinks'i takip edecek şekilde yapılandırılmış mı? 'Seçenekler FollowSymLinks' gibi –

+0

Bunun Apache ile ilgisi olduğunu sanmıyorum. Bu bir PHP "özelliği". Bunu komut satırına girerseniz 'mkdir a; ln-s a b; php -r 'chdir ("b"); echo getcwd(); ''php,' a 'olarak adlandırılmış olsanız bile,' a 'adlı bir dizinde olduğunuzu gösterir. – edam

cevap

8

Tamam, anladım. Tarayıcı üzerinden $_SERVER['SCRIPT_FILENAME'] kullanın. Komut satırında geçerli simetri dizini exec("pwd")