gzcompress не создаст действительный заархивированный файл? - PullRequest
1 голос
/ 12 сентября 2011

Учтите это:

$text = "hello";
$text_compressed = gzcompress($text, 6);
$success = file_put_contents('file.gz', $text_compressed);

Когда я пытаюсь открыть file.gz, я получаю ошибки.Как я могу открыть file.gz под терминалом без вызова php?(использование gzuncompress работает просто отлично!)

Я не могу перекодировать каждый файл, который я сделал, поскольку теперь у меня есть почти миллиард файлов, закодированных таким образом! Так что, если есть решение...:)

Ответы [ 2 ]

3 голосов
/ 12 сентября 2011

Вместо этого вам нужно использовать gzencode().

К счастью для вас, это легко исправить: просто напишите скрипт, который открывает каждый из ваших файлов один за другим, использует gzuncompress() распаковать этот файл, а затем записать этот файл обратно с gzencode() вместо gzcompress(), повторяя процесс для всех файлов.

В качестве альтернативы (поскольку вы сказали, что «не хотите перекодировать ваши файлы»), вы можете использовать uncompress, чтобы открыть существующие файлы из командной строки (вместо gunzip / zcat).


Как указано на gzcompress() странице руководства :

gzcompress

Это не аналогично сжатию gzip, которое включает в себя некоторые данные заголовка.См. Gzencode () для сжатия gzip.

1 голос
/ 12 сентября 2011

Как уже говорилось, у вас нет действительно сжатых файлов. Чтобы открыть файлы из терминала, вам нужна утилита uncompress .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...