У меня есть следующий код в файле, который включен в множество других страниц, которые требуют эту информацию.
$directory_list = scandir("../packages");
$known_directories = [
".",
".."];
$unknown_directories = $result = array_diff($directory_list, $known_directories);
Это прекрасно работает, когда я открываю файл, который содержит этот код напрямую. Однако этот файл должен иметь возможность предоставлять эту информацию другим файлам, будучи включенным в указанные файлы. Кажется, что scandir
работает по пути относительно файла, в который включен этот код.
Как бы я использовал путь включенного файла независимо от того, куда этот файл включен?
Попробуй добавить 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__)
, Это имя каталога не имеет косой черты
если это не корневой каталог.
Других решений пока нет …