Извлечение файлов без расширений с помощью Phar

Используя PHP Phar, как я могу указать, какой тип файла у меня есть, когда у него нет и расширения?

У меня есть каталог файлов со случайно сгенерированными именами, все файлы имеют формат tar.gz и имеют одинаковую структуру, я хочу извлечь только один файл, config.xml:

С использованием:

$phar = new PharData($source_file);
$phar->extractTo($tmp, 'config.xml');

Я получаю следующую ошибку:

Неустранимая ошибка PHP: Uncaught UnexpectedValueException: невозможно создать phar '/path/to/fkd20c3nd', расширение файла (или комбинация) не распознано или каталог не существует в /path/to/my_script.php:123

Однако это только потому, что файл имеет случайное имя на диске, т.е.

fkd20c3nd

Если я просто переименую это в

fkd20c3nd.tar.gz

Фар работает нормально.

Вопрос

Как я могу использовать Phar для извлечения файла, у которого отсутствует расширение, помимо того, что сначала нужно сделать его копию с новым именем? Могу ли я просто указать Phar тип файла?


person Matt Clark    schedule 05.08.2018    source источник


Ответы (1)


.phar имена файлов должны содержать по крайней мере точку в середине своего имени, чтобы имя файла.

Техническая причина этого заключается в том, что вы можете получить доступ к файлам внутри phar, передав его комбинированный путь, например «/path/to/my.phar/README.rst», и без точки это не сработает. Я знаю, что в вашем случае вам это не нужно, но те же внутренние функции используются для определения правильности имени phar.

person cweiske    schedule 27.09.2018