Эта константа 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, он всегда будет присутствовать.

Через: http://mwop.net/blog/45-PHP_SELF-versus-SCRIPT_NAME

Возможно, вы могли бы использовать

$_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()

Другие вопросы по тегам