Php - получить имя родительского скрипта - PullRequest
12 голосов
/ 23 августа 2009

parent.php:

require_once 'child.php';

child.php:

echo __FILE__;

Будет показано «... / child.php»

Как я могу получить '... / parent.php'

Ответы [ 5 ]

19 голосов
/ 15 апреля 2011

Выбранный ответ работает только в средах, которые устанавливают переменные сервера и, в частности, не работают из сценария CLI. Кроме того, он не определяет родителя, а только самый верхний файл сценария.

Вы можете сделать почти то же самое из сценария CLI, посмотрев на $ 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'];
}
13 голосов
/ 23 августа 2009
print $_SERVER["SCRIPT_FILENAME"];
1 голос
/ 23 августа 2009

Я не думаю, что вы можете сделать это: магическая константа __FILE__ указывает, в каком файле она написана; и это все.

Если вы хотите знать, какой PHP-скрипт изначально назывался (например, какой URL-адрес был запрошен), вам может повезти, если вы посмотрите на $_SERVER superglobal: он содержит много информации, в том числе и ту, которая поможет вам (например, SCRIPT_FILENAME или SCRIPT_NAME) ; -)

0 голосов
/ 11 февраля 2017

Вы должны использовать basename($_SERVER["SCRIPT_FILENAME"]) или, если вам нравится только сценарий с именем, вы можете использовать basename($_SERVER["SCRIPT_FILENAME"], '.php').

0 голосов
/ 25 июля 2015

Прямо к решению:

Родительский скрипт:

echo $_SERVER['SCRIPT_FILENAME'];

Дочерний скрипт (включенный файл в родительский скрипт):

echo __FILE__;

Создайте файл с именем parent.php с содержанием:

include('child.php');

Создайте файл с именем child.php с содержанием:

echo "My Parent is at: " . $_SERVER['SCRIPT_FILENAME'] . "<br>";
echo "I'm at: " .  __FILE__;

Вы поняли ...

...