Получить имя файла, содержащего скрипт PHP

Вот пример того, что я пытаюсь сделать:

index.php

<ul><?php include("list.php") ?></ul> 

list.php

 <?php if (PAGE_NAME is index.php) { //Do something } else { //Do something } ?> 

Как я могу получить имя файла, который включает скрипт list.php (PAGE_NAME)? Я пробовал basename(__FILE__) , но это дает мне list.php .

Solutions Collecting From Web of "Получить имя файла, содержащего скрипт PHP"

$_SERVER["PHP_SELF"]; возвращает то, что вы хотите

Если вам действительно нужно знать, к какому файлу относится текущий, это решение:

 $trace = debug_backtrace(); $from_index = false; if (isset($trace[0])) { $file = basename($trace[0]['file']); if ($file == 'index.php') { $from_index = true; } } if ($from_index) { // Do something } else { // Do something else } 

Если кто-то попал сюда из поисковой системы, принятый ответ будет работать только в том случае, если скрипт находится в корневом каталоге сервера, поскольку PHP_SELF – это имя файла с контуром относительно корня сервера. Таким образом, универсальное решение

 basename($_SERVER['PHP_SELF']) 

Также имейте в виду, что это возвращает верхний скрипт, например, если у вас есть скрипт и включает файл, а затем в файл с включенным файлом включить другой файл и попробовать это, вы получите имя первого скрипта, а не второго.

В коде, включая list.php , перед включением вы можете установить переменную с именем $this_page а затем list.php может увидеть тест для значения этой $this_page и действовать соответствующим образом.

Возможно, вы можете сделать что-то вроде следующего:

 <ul> <?php $page_name = 'index'; include("list.php") ?> </ul> в <ul> <?php $page_name = 'index'; include("list.php") ?> </ul> 

list.php

 <?php if ($pagename == 'index') { //Do something } else { //Do something } ?> 

basename($_SERVER['PHP_SELF']) решения basename($_SERVER['PHP_SELF']) но я рекомендую установить strtolower(basename($_SERVER['PHP_SELF'])) чтобы проверить ошибки strtolower(basename($_SERVER['PHP_SELF'])) или index.php.

Но если вы хотите альтернативу, которую вы можете сделать:
<?php if (strtolower(basename($_SERVER['SCRIPT_FILENAME'], '.php')) === 'index'): ?> .