2012-12-07 16 views
13

__DIR__ ve __FILE__ sabitleri, sembolik bir durumda çalışmaz. Bunun için geçici çözüm nedir? ÖrneğinPHP __DIR__ veya __FILE__ symlinked

:

/home/me/modules/myfile.php 

Bu sembolik olarak edilir:

Bir dosya var ben /var/www/project

bulunan bir dosya eklemek gerekir /home/me/modules/myfile.php gelen
/var/www/project/app/myfile.php 

EDIT

realpath() kullanım önerilerine - ne yazık ki bu işe yaramıyor.

var_dump(__DIR__); 
var_dump(realpath(__DIR__)); 

hem

Sen sembolik bağlantıları genişletmek için realpath() işlevini kullanabilirsiniz aynı filepath

+3

[ 'realpath()'] (http://us3.php.net/manual/en/function.realpath.php) –

+0

garip , realpath() false değerini döndürür ve dosya kesinlikle varolan –

+0

'realpath()' _what_ false değerini döndürür? 'realpath (__ DIR __)' –

cevap

0

döndürür. Benim tavsiyem, bunun gibi, symlinks kullanmamak olacaktır. (PHP'nize /var/www/project/app veya uygun bir üst dizin ekleyin, bunun yerine yolu ekleyin.)

+0

Im afraid realpath bana –

+0

['readlink()'] (http://php.net/readlink) simgelenen konumunu vermez mi? Değilse, ben kaybettim. – duskwuff

+1

@duskwuff bkz http://stackoverflow.com/questions/13771021/php-dir-or-file-symlinked#comment18933995_13771021 OP, realpath ve readlink –

2

Aşağıdakileri denediniz mi? Senin durumunda

dirname($_SERVER['SCRIPT_FILENAME'])

bu döndürür: /var/www/project/app

+0

Bu kabul edilen yanıt –

+0

olmalıdır. Bu sadece PHP'nin komut satırında değil Apache gibi bir web sunucusunda çalıştığını varsayıyor. – Greg

+0

Doğru değil. Bu, bir Web Sunucu Konsolunu kullanıp kullanmadığına bakılmaksızın çalışır. Hala bir Sunucu/SAPI'den geçiyor - bir konsol açısından, örneğin apache-cgi'den ziyade fpm-cgi'den geçecek. Bunu test ettim ve '$ _SERVER [' SCRIPT_FILENAME '] 'kesinlikle işe yarıyor. –

İlgili konular