Я хочу, чтобы распаковать файл, и это прекрасно работает
system('unzip File.zip');
Но мне нужно передать имя файла через URL и не могу заставить его работать, это то, что у меня есть.
$master = $_GET["master"];
system('unzip $master.zip');
Чего мне не хватает? Я знаю, что это должно быть что-то маленькое и глупое, которое я пропускаю.
Спасибо,
system("unzip $master.zip");
должно работать.Ответы:
Я могу только предположить, что ваш код взят из учебника где-то в Интернете? В таком случае, хорошая работа, пытаясь понять это самостоятельно. С другой стороны, тот факт, что этот код может быть опубликован где-то в Интернете как правильный способ распаковать файл, немного пугающий.
PHP имеет встроенные расширения для работы со сжатыми файлами. Для этого не нужно использовать
system
звонки.ZipArchive
документы это один из вариантов.Кроме того, как прокомментировали другие,
$HTTP_GET_VARS
это устарело с версии 4.1 ..., которая была очень давно. Не используйте это. Используйте$_GET
вместо этого суперглобальный.Наконец, будьте очень осторожны, принимая любые входные данные, передаваемые в скрипт через
$_GET
переменную.ВСЕГДА САНИТИЗИРУЙТЕ ПОЛЬЗОВАТЕЛЬСКИЙ ВХОД.
ОБНОВИТЬ
Согласно вашему комментарию, лучший способ извлечь zip-файл в тот же каталог, в котором он находится, - это определить жесткий путь к файлу и извлечь его специально в это место. Итак, вы можете сделать:
источник
$zip->extractTo('./');
Однако, это, вероятно, не тот случай. Лучший вариант - определить местоположение zip-файла в файловой системе и извлечь его там. Я обновлю свой ответ, чтобы продемонстрировать.Fatal error: Class 'ZipArchive' not found
ошибке, которое я пробую с помощью этого сценария :-( Есть ли какая-либо опция в этот момент?zlib
библиотека для выполнения практически любых операций сжатия / распаковки с помощью PHP. Даже для системных вызовов вам понадобится базовая библиотека. Это очень распространенная вещь, и не исключение. Если вы используете виртуальный хостинг, они должны установить его для вас. В противном случае, просто Google что-то вроде «Как установить поддержку функций Zip для PHP»Пожалуйста, не делайте так (передавая GET var, чтобы быть частью системного вызова). Вместо этого используйте ZipArchive .
Итак, ваш код должен выглядеть так:
И чтобы ответить на ваш вопрос, ваша ошибка «что-то $ var что-то еще» должна быть «что-то $ var что-то еще» (в двойных кавычках).
источник
Использование
getcwd()
для извлечения в том же каталогеисточник
Просто попробуйте это yourDestinationDir - это место назначения для извлечения или удаления -d yourDestinationDir для извлечения в корневой каталог.
источник
yourDestinationDir
как,session_save_path() . DIRECTORY_SEPARATOR . "$name" . DIRECTORY_SEPARATOR
где$name
находится целевая папка, чтобы разархивировать в папке сеанса.Я обновил ответ @rdlowrey на более чистый и качественный код. Это позволит распаковать файл в текущий каталог, используя
__DIR__
.источник
PHP имеет свой собственный встроенный класс, который можно использовать для распаковки или извлечения содержимого из zip-файла. Класс ZipArchive. Ниже приведен простой и базовый код PHP, который извлечет zip-файл и поместит его в определенный каталог:
Если вам нужны дополнительные возможности, то ниже приведен улучшенный код, который проверит, существует ли zip-файл:
Источник: Как распаковать или распаковать zip-файлы в PHP?
источник
Я обновил ответ Morteza Ziaeemehr на более чистый и качественный код. Это позволит распаковать файл, предоставленный в форме, в текущий каталог с помощью DIR .
источник
Просто поменяй
К этому
или этот
system("unzip {$master}.zip");
источник
Вы можете использовать упакованную функцию
Как это использовать.
источник
Используйте приведенный ниже PHP-код с именем файла в URL-адресе «имя»
источник
Простая функция PHP для распаковки. Пожалуйста, убедитесь, что на вашем сервере установлено расширение zip.
источник
Просто используйте это:
в вашем коде
$master
передается в виде строки, система будет искать файл с именем$master.zip
источник
'unzip' $master
не будет работать, если вы не добавите пробел после распаковки и добавите точку после одинарной кавычки. Было бы намного проще предложитьsystem("unzip $master.zip")
двойные кавычки или хотя бы правильный ответ.$_GET
строку запроса и ввести свой собственный код вsystem
вызов