Scandir относительно пути к файлу при включении?

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

$directory_list = scandir("../packages");
$known_directories = [
".",
".."];
$unknown_directories = $result = array_diff($directory_list, $known_directories);

Это прекрасно работает, когда я открываю файл, который содержит этот код напрямую. Однако этот файл должен иметь возможность предоставлять эту информацию другим файлам, будучи включенным в указанные файлы. Кажется, что scandir работает по пути относительно файла, в который включен этот код.

Как бы я использовал путь включенного файла независимо от того, куда этот файл включен?

1

Решение

Попробуй добавить dirname(__FILE__) на ваш путь в scandir:

$directory_list = scandir(dirname(__FILE__)."/../packages");
$known_directories = [
".",
".."];
$unknown_directories = $result = array_diff($directory_list, $known_directories);

Это должно работать, потому что __FILE__ описано Вот

__FILE__ Полный путь и имя файла с символическими ссылками разрешены. Если используется внутри включения, имя включенного файла
вернулся.

Вы даже можете заменить dirname(__FILE__) с __DIR__

__DIR__ Каталог файла. Если используется внутри include, каталог
включенный файл возвращается. Это эквивалентно
dirname(__FILE__), Это имя каталога не имеет косой черты
если это не корневой каталог.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]