parent.php:
require_once 'child.php';
child.php:
echo __FILE__;
Он покажет '.../child.php'
Как я могу получить '.../parent.php'
parent.php:
require_once 'child.php';
child.php:
echo __FILE__;
Он покажет '.../child.php'
Как я могу получить '.../parent.php'
print $_SERVER["SCRIPT_FILENAME"];
Выбранный ответ работает только в средах, которые устанавливают переменные сервера и, в частности, не работают из CLI script. Кроме того, он не определяет родителя, а только самый верхний script файл.
Вы можете сделать почти то же самое из CLI script, посмотрев на $argv [0], но это не обеспечивает полный путь.
Не зависящее от среды решение использует debug_backtrace:
function get_topmost_script() {
$backtrace = debug_backtrace(
defined("DEBUG_BACKTRACE_IGNORE_ARGS")
? DEBUG_BACKTRACE_IGNORE_ARGS
: FALSE);
$top_frame = array_pop($backtrace);
return $top_frame['file'];
}
Я не думаю, что вы можете это сделать: магическая константа __FILE__
указывает, в каком файле она написана; и это все.
Если вы хотите узнать, какой изначально был вызван PHP script (какой URL был запрошен, например), у вас может быть больше удачи, смотря на суперклассу $_SERVER
: он содержит много информации, в том числе некоторые, которые помогут вам (например, SCRIPT_FILENAME
или SCRIPT_NAME
); -)
Прямо к решению:
Родительский Script:
echo $_SERVER['SCRIPT_FILENAME'];
Ребенок Script (включенный файл в родительском script):
echo __FILE__;
Создайте файл с именем "parent.php" с содержимым:
include('child.php');
Создайте файл с именем "child.php" с содержимым:
echo "My Parent is at: " . $_SERVER['SCRIPT_FILENAME'] . "<br>";
echo "I'm at: " . __FILE__;
Вы получаете идею...
Вы должны использовать basename($_SERVER["SCRIPT_FILENAME"])
или, если вам нравится только script nam, вы можете использовать basename($_SERVER["SCRIPT_FILENAME"], '.php')
.