Как разархивировать файлы с помощью PHP, если включен безопасный режим и вы не можете установить расширения? - PullRequest
1 голос
/ 01 апреля 2009

Существуют ли PHP-скрипты, которые могут распаковать обычные zip-файлы? Наши требования заключаются в том, что мы должны работать с включенным safe_mode, и нам не разрешается устанавливать какие-либо расширения для включения этой функции. Таким образом, любой функционал должен быть обычным PHP-скриптом.

Есть мысли?


РЕДАКТИРОВАТЬ: К сожалению, ни одно из опубликованных решений не работает для нас. Мы не можем изменять требование safe_mode, если не переключаем хосты, что в настоящее время недоступно.

Ответы [ 5 ]

4 голосов
/ 07 апреля 2009

pclzip.lib.php - довольно популярный и широко используемый класс php, который может извлекать zip-файл, содержащий чистый php

http://www.phpconcept.net/pclzip/index.en.php

2 голосов
/ 01 апреля 2009

Не можете ли вы попросить их отключить безопасный режим для одной папки, используя директиву .htaccess, например:

php_value safe_mode "0"

и положить туда скрипт распаковки?

Если так, то что-то вроде:

$output = shell_exec('unzip /path/to/file');

Сделал бы это

2 голосов
/ 01 апреля 2009

Посмотрите на http://www.phpclasses.org/browse/package/2495.html

Используется расширение gzip, но оно установлено почти на каждом сервере (надеюсь, проверьте с помощью phpinfo ())

2 голосов
/ 01 апреля 2009

Обычный ответ здесь: это или это . Однако согласно документации PHP :

PHP 4

В комплекте с версией PHP 4 требуется »ZZIPlib , от Guido Draheim, версия 0.10.6 или новее

PHP 5.2.0 или новее

Это расширение использует функции »zlib от Жана-лупа Гэйли и Марка Адлера.

Итак, обоим нужны внешние зависимости.

0 голосов
/ 07 апреля 2009

Если вы работаете в Linux / Unix, вы можете запустить

exec("unzip file.zip");

Примечание. Когда включен безопасный режим, вы можете выполнять файлы только в пределах safe_mode_exec_dir.

...