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
system
llamadas para esto.ZipArchive
docs es una opción.Además, como han comentado otros,
$HTTP_GET_VARS
ha quedado en desuso desde la versión 4.1 ... que fue hace mucho tiempo. No lo uses Utilice el$_GET
superglobal en su lugar.Finalmente, tenga mucho cuidado al aceptar cualquier entrada que se pase a un script a través de una
$_GET
variable.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 found
error que intento con este script :-( ¿Hay alguna opción en ese momento?zlib
biblioteca 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
yourDestinationDir
comosession_save_path() . DIRECTORY_SEPARATOR . "$name" . DIRECTORY_SEPARATOR
dónde$name
está 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
$master
se pasa como una cadena, el sistema buscará un archivo llamado$master.zip
fuente
'unzip' $master
no 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.$_GET
cadena de consulta e inyectar su propio código a lasystem
llamada