Я пытаюсь внедрить корневой каталог в абстракции файловой системы. Проблема, с которой я сталкиваюсь, заключается в следующем:
API позволяет читать и записывать файлы не только на локальные, но и на удаленные хранилища. Так что под капотом происходят все виды нормализации. В настоящий момент это не поддерживает относительные пути, поэтому что-то вроде этого невозможно:
$filesystem->write('path/to/some/../relative/file.txt', 'file contents');
Я хочу иметь возможность безопасно разрешать путь, поэтому выход будет: path/to/relative/file.txt
.
Как указано в проблеме github, которая была создана для этой ошибки/улучшения (https://github.com/FrenkyNet/Flysystem/issues/36#issuecomment-30319406), ей нужно сделать больше, чем просто разделение сегментов и их удаление соответственно.
Кроме того, поскольку пакет обрабатывает удаленные файловые системы и несуществующие файлы, вопрос realpath не может быть и речи.
Итак, как это следует делать при работе с этими путями?