Какая разница между $_SERVER ['PHP_SELF'] и $_SERVER ['SCRIPT_NAME']?
У меня есть инфраструктура php, и я использовал $_SERVER['SCRIPT_NAME']
для оптимизации переносимости. Таким образом, мне больше не нужно настраивать путь вручную.
$this->base_url = str_replace('index.php', '', 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME']);
Но я заметил, что $_SERVER['SCRIPT_NAME']
и $_SERVER['PHP_SELF']
возвращает ту же строку. Итак, какая разница? Как выбрать между ними?
Ответы
Ответ 1
Разница
http://sandbox.phpcode.eu/g/3e38d.php/test
Script name - абсолютный путь к файлу.
PHP_SELF
- это script, в котором вы находитесь (наряду с "path" после .php
)
Ему нравится $_SERVER['SERVER_NAME']
и $_SERVER['HTTP_HOST']
http://sandbox.phpcode.eu./g/f5093.php
http://sandbox.phpcode.eu/g/f5093.php
укажите одно различие
Ответ 2
SCRIPT_NAME
Содержит текущий путь script. Это полезно для страниц, которые должны указывать на себя. Константа __FILE__
содержит полный путь и имя файла текущего (т.е. Включенного) файла.
PHP_SELF
Имя исполняемого файла script, относящегося к корню документа. Например, $_SERVER['PHP_SELF']
в script по адресу http://example.com/test.php/foo.bar
будет /test.php/foo.bar
. Константа __FILE__
содержит полный путь и имя файла текущего (т.е. Включенного) файла. Если PHP работает как процессор командной строки, эта переменная содержит имя script с PHP 4.3.0. Раньше он не был доступен.
источник php.net
Есть одно:
Отъезд http://www.yoursite.com/example/index.php/dir/test
in $_SERVER['PHP_SELF'] == '/example/index.php/dir/test';
in $_SERVER['SCRIPT_NAME'] == '/example/index.php';
ETA:
Пробовал себя
Пробовал это на localhost
http://127.0.0.1:8887/index.php/dir/test
echo $_SERVER['PHP_SELF'] . "<br />";
echo $_SERVER['SCRIPT_NAME'];
Выход:
/index.php/dir/test
/index.php