Спешу поведать вам о хитрых граблях, на которые наткнулся некоторое время назад.
Проблема заключается в том, что путь в переменной $_SERVER['SCRIPT_FILENAME'] может отличаться от пути, получаемым через __FILE__. Конечно у меня возник вопрос "какова хрена??" ведь файл один и тот же, значит путь до него должен быть одинаковый вне зависимости от способа получения. Оказывается это не совсем так.. Если папка с сайтом (которая прописана как document root в конфиге апача) является симлинком на оригинальную папку, то __FILE__ будет возвращать путь до настоящей папки, а $_SERVER['SCRIPT_FILENAME'] вернет симлинковый путь.
Я вас предупредил
![wink.gif](http://phpforum.ru/html/emoticons/wink.gif)
Спустя 2 часа, 54 минуты, 53 секунды (3.08.2009 - 06:58) Sylex написал(а):
Цитата |
__FILE__ The full path and filename of the file. If used inside an include, the name of the included file is returned. Since PHP 4.0.2, __FILE__ always contains an absolute path with symlinks resolved whereas in older versions it contained relative path under some circumstances. |
т.е. для абсолютного пути юзаем всегда __FILE__
вот скрипт:
PHP |
<?php |
Цитата |
Note: If a script is executed with the CLI, as a relative path, such as file.php or ../file.php, $_SERVER['SCRIPT_FILENAME'] will contain the relative path specified by the user. |
если его выполнить из командной строки, то будет разный результат:
указан относительный путь:
Код |
D:\PHP>php ..\www\work1\3.php -f |
__FILE__ D:\www\work1\3.php<br>$_SERVER['SCRIPT_FILENAME'] ..\www\work1\3.php
через браузер:
__FILE__ D:\www\work1\3.php
$_SERVER['SCRIPT_FILENAME'] D:/www/work1/3.php