@denisator
Фрилансер

Как при помощи Phar добавлять в tar файлы с кириллическими именами?

Мне нужно на сервере паковать много jpg с кириллическими именами файлов в один файл для загрузки.

Если делать так:
$a = new PharData('/www/test/my.tar');
$a->addFile('/www/test/привет.jpg', "привет.jpg");

то php ругается так:
[BadMethodCallException] 
Entry привет.jpg does not exist and cannot be created: phar error: invalid path "привет.jpg" contains illegal character (0)
/www/test/tar.php:11
#0: PharData->addFile(string, string)
	/www/test/tar.php:11


А если делать так:
$a = new PharData('/www/test/my.tar');
$a->addFile('/www/test/привет.jpg', iconv('UTF-8', 'windows-1251', "привет.jpg"));

то ругается так:
#0: PharData->addFile(string, string)
	/www/test/tar.php:13


Если phar совсем не дружит с кириллицей то чем ещё можно паковать файлы в один архив без сжатия?
ZipArchive() не подходит потому что хоть у него всё хорошо с кириллицей, но всё плохо с отсутствием сжатия.
  • Вопрос задан
  • 344 просмотра
Решения вопроса 1
@Fortop
Tech/Team lead
Все отлично у ZipArchive c компрессией без сжатия

php.net/manual/en/ziparchive.setcompressionname.php
php.net/manual/en/zip.constants.php

CM_STORE

Что касается PHAR
$p =  new PharData('data.tar');
$p->addFile(__DIR__ . '/../app/кирилический файл.php', 'app/кирилический2.php');


То все работает, если файл __DIR__ . '/../app/кирилический файл.php' существует
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы