define('QA_BASE_DIR', dirname(empty($_SERVER['SCRIPT_FILENAME']) ? __FILE__ : $_SERVER['SCRIPT_FILENAME']).'/');
В чем разница между __FILE__
и $_SERVER['SCRIPT_FILENAME']
?
define('QA_BASE_DIR', dirname(empty($_SERVER['SCRIPT_FILENAME']) ? __FILE__ : $_SERVER['SCRIPT_FILENAME']).'/');
В чем разница между __FILE__
и $_SERVER['SCRIPT_FILENAME']
?
Blackquoting из http://www.qualitycodes.com/tip/17/difference-between-serverscriptfilename-and-file.html:
$_SERVER['SCRIPT_FILENAME']
переменных будет возвращать то же путь, будет ли она использоваться в основном файле или включаемый файл с другой стороны__FILE__
переменными вернут вам путь включаемого файла, если используются внутри включенный файл и путь к основному файлу, если он используется в основном файле. Я имею в виду основной файл тот, чье имя отображается в адресной строке браузера.
также ... '$ _SERVER ['SCRIPT_FILENAME']' перед символьными ссылками. '__FILE__' после символьных ссылок соблюдается, т. Е. Применяется функция' realpath() ' –
Также' __FILE__' использует 'DIRECTORY_SEPARATOR', тогда как' $ _SERVER ['SCRIPT_FILENAME'] 'использует'/' – Theraot
Из документации PHP разница в том, что $_SERVER['SCRIPT_FILENAME']
содержит абсолютный путь к текущему сценарию и в режиме CLI может содержать относительный путь.
__FILE__
будет содержать путь к включенному файлу, если он используется внутри включенного файла, или путь к основному файлу, если он используется в основном файле.
'__FILE__' - это фактическое имя файла, содержащее ссылку на' __FILE__' (который может быть включенным файлом); '$ _SERVER ['SCRIPT_FILENAME']' - это имя скрипта, который запросил браузер –
Они абсолютно идентичны. –
@ HassanAzimi: они абсолютно НЕ идентичны. '$ _SERVER ['SCRIPT_FILENAME']' - это абсолютный путь к файлу запроса ... до того, как были соблюдены символические ссылки. '__FILE__' - это абсолютный путь к файлу, который содержит' __FILE__' ... после того, как были соблюдены символические ссылки. Чтобы проверить, является ли текущий файл запрошенным файлом: '__FILE__ == realpath ($ _ SERVER ['SCRIPT_FILENAME']);' –