Эта константа PHP существует? - PullRequest
0 голосов
/ 20 ноября 2011

Есть ли константа 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 ]

4 голосов
/ 20 ноября 2011

Вы, вероятно, хотите _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

2 голосов
/ 20 ноября 2011

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

$_SERVER['SCRIPT_NAME'];

Не знаю, правильно ли я понял вопрос, вы также можете объединить корень и файл

$_SERVER['DOCUMENT_ROOT'].$_SERVER['SCRIPT_NAME'];
0 голосов
/ 20 ноября 2011

Нет такой предопределенной переменной.

Но вы можете легко получить его из этих двух, используя в качестве основных функций для работы со строками, такие как strlen() и substr()

0 голосов
/ 20 ноября 2011
<?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
?> 
...