Quiero descomprimir un archivo y esto funciona bien
system('unzip File.zip');
Pero necesito pasar el nombre del archivo a través de la URL y no puedo hacerlo funcionar, esto es lo que tengo.
$master = $_GET["master"];
system('unzip $master.zip');
¿Qué me estoy perdiendo? Sé que tiene que ser algo pequeño y estúpido que estoy pasando por alto.
Gracias,

system("unzip $master.zip");debería funcionar.Respuestas:
¿Solo puedo suponer que su código proviene de un tutorial en algún lugar en línea? En ese caso, buen trabajo tratando de resolverlo por ti mismo. Por otro lado, el hecho de que este código se pueda publicar en línea en algún lugar como la forma correcta de descomprimir un archivo es un poco aterrador.
PHP tiene extensiones incorporadas para manejar archivos comprimidos. No debería haber necesidad de usar
systemllamadas para esto.ZipArchivedocs es una opción.Además, como han comentado otros,
$HTTP_GET_VARSha quedado en desuso desde la versión 4.1 ... que fue hace mucho tiempo. No lo uses Utilice el$_GETsuperglobal en su lugar.Finalmente, tenga mucho cuidado al aceptar cualquier entrada que se pase a un script a través de una
$_GETvariable.SIEMPRE DESINFECCIONE LA ENTRADA DE USUARIO.
ACTUALIZAR
Según su comentario, la mejor manera de extraer el archivo zip en el mismo directorio en el que reside es determinar la ruta de acceso dura al archivo y extraerlo específicamente a esa ubicación. Entonces, podrías hacer:
fuente
$zip->extractTo('./');, sin embargo, este no es el caso. Una mejor opción es determinar la ubicación del archivo zip en el sistema de archivos y extraerlo allí. Actualizaré mi respuesta para demostrar.Fatal error: Class 'ZipArchive' not founderror que intento con este script :-( ¿Hay alguna opción en ese momento?zlibbiblioteca subyacente para realizar prácticamente cualquier operación de compresión / descompresión con PHP. Incluso para hacer llamadas al sistema, necesitaría tener la biblioteca subyacente. Sin embargo, esto es algo muy ubicuo, y no tenerlo es la excepción. Si estás en un alojamiento compartido, deberían instalarlo por ti. De lo contrario, solo busque en Google algo como "Cómo instalar el soporte de funciones Zip para PHP"Por favor, no lo haga así (pasar GET var para ser parte de una llamada al sistema). Use ZipArchive en su lugar.
Entonces, su código debería verse así:
Y para responder a su pregunta, su error es 'algo $ var otra cosa' debería ser "algo $ var otra cosa" (entre comillas dobles).
fuente
Utilizando
getcwd()para extraer en el mismo directoriofuente
Simplemente intente esto yourDestinationDir es el destino para extraer o eliminar -d yourDestinationDir para extraer al directorio raíz.
fuente
yourDestinationDircomosession_save_path() . DIRECTORY_SEPARATOR . "$name" . DIRECTORY_SEPARATORdónde$nameestá la carpeta de destino para descomprimir en la carpeta de sesión.Actualicé la respuesta de @rdlowrey a un código más limpio y mejor. Esto descomprimirá un archivo en el directorio actual usando
__DIR__.fuente
PHP tiene su propia clase incorporada que puede usarse para descomprimir o extraer contenidos de un archivo zip. La clase es ZipArchive. A continuación se muestra el código PHP simple y básico que extraerá un archivo zip y lo colocará en un directorio específico:
Si desea algunas funciones avanzadas, a continuación se encuentra el código mejorado que verificará si el archivo zip existe o no:
Fuente: ¿Cómo descomprimir o extraer archivos zip en PHP?
fuente
Actualicé la respuesta de Morteza Ziaeemehr a un código más limpio y mejor. Esto descomprimirá un archivo proporcionado dentro del formulario en el directorio actual usando DIR .
fuente
Solo cambia
A este
o este
system("unzip {$master}.zip");fuente
puedes usar la función preempaquetada
Cómo usarlo.
fuente
Use el siguiente código PHP, con el nombre del archivo en el parámetro de URL "nombre"
fuente
Función PHP simple para descomprimir. Asegúrese de tener instalada la extensión zip en su servidor.
fuente
Solo usa esto:
en su código
$masterse pasa como una cadena, el sistema buscará un archivo llamado$master.zipfuente
'unzip' $masterno funcionaría a menos que agregue un espacio después de descomprimir y agregue un punto después de la comilla simple. Hubiera sido mucho más fácil sugerirsystem("unzip $master.zip")con comillas dobles, o al menos una respuesta válida.$_GETcadena de consulta e inyectar su propio código a lasystemllamada