Эта константа PHP существует?
Есть ли константа PHP, которая автоматически удаляет $_SERVER['DOCUMENT_ROOT']
от __FILE__
?
Так что если корень документа является:
/Applications/XAMPP/xamppfiles/htdocs
А также __FILE__
является:
/Applications/XAMPP/xamppfiles/htdocs/Project/application/controllers/index.php
Возвращает:
/Project/application/controllers/index.php
4 ответа
Вы, вероятно, хотите _SERVER['PHP_SELF']
или же _SERVER['SCRIPT_NAME']
,
PHP_SELF
: Имя файла исполняемого в данный момент скрипта относительно корня документа.SCRIPT_NAME
: Содержит путь текущего скрипта. Это полезно для страниц, которые должны указывать на себя.__FILE__
Константа содержит полный путь и имя файла текущего (т.е. включенного) файла.
О разнице между двумя:
Тем не менее, я только что заметил сообщение в группе новостей php.general, где кто-то спросил, в чем разница между ними. Семантически не существует; они должны содержать одинаковую информацию. Однако исторически и технически говоря, есть. SCRIPT_NAME определен в спецификации CGI 1.1 и, таким образом, является стандартом. Однако не все веб-серверы действительно реализуют его, и, следовательно, он не обязательно переносим. PHP_SELF, с другой стороны, реализуется непосредственно PHP, и пока вы программируете на PHP, он всегда будет присутствовать.
Возможно, вы могли бы использовать
$_SERVER['SCRIPT_NAME'];
Я не знаю, правильно ли я понял вопрос, вы также можете объединить корень и файл
$_SERVER['DOCUMENT_ROOT'].$_SERVER['SCRIPT_NAME'];
<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n"; // since PHP 5.2.0
?>
Нет такой предопределенной переменной.
Но вы можете легко получить это из этих двух, используя в качестве основных функций для работы со строками, как strlen()
а также substr()