Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Warning ao buscar o arquivo zip

Estou com o seguinte erro ao executar o código.

echo file_get_contents("zip://var/www/html/arquivos.zip#lista-cursos.txt");

Erro: Warning: file_get_contents(zip://var/www/html/arquivos.zip#lista-cursos.txt): Failed to open stream: operation failed in /var/www/html/leitor-zip.php on line 3

Estou usando uma ambiente em Docker

FROM php:8.1.5-apache

LABEL maintainer="Guilherme F Silveira"

WORKDIR /var/www/html

RUN apt-get update && \
    apt-get install -y vim && \
    apt-get install -y libzip-dev && \
    apt-get install -y zip && \
    docker-php-ext-install pdo pdo_mysql mysqli zip && \
    curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

COPY . /var/www/html

EXPOSE 80

Obrigado.

9 respostas

Guilherme, o arquivo arquivos.zip existe dentro do seu container? Como você não está usando volumes do Docker, se você adicionou esse arquivo a sua pasta após já ter gerado o build da imagem com esse Dockerfile, vai precisar gerar o build de novo para que o COPY seja executado.

Bom dia Vinicius, como está.

Sim, como indicado abaixo, o arquivo está no container.

![](Lista de arquivos. )

Obrigado.

PS.: Gosto muito dos seus cursos de PHP. Obrigado.

O leitor-zip.php.

<?php

    echo file_get_contents("zip://var/www/html/arquivos.zip#lista-cursos.txt");

Guilherme, você consegue compartilhar o projeto no github pra eu baixar do jeito que tá aí e tentar reproduzir? Coloca seu Dockerfile lá também, por favor?

Só batendo o olho assim não to vendo nada errado,.

Guilherme, você mandou a URL errada ou deixou o repo privado. Não consigo acessar.

Erro meu. Mudei a visibilidade para publico. Obrigado.

solução!

Guilherme, é um detalhe tão pequeno que eu mesmo não reparei aqui quando você postou o código: faltou uma / no caminho do arquivo. rsrsr

Quando você digita zip://algo, algo vai ser buscado a partir do diretório atual. Se você quer passar o caminho absoluto, precisa de mais uma /, ficando:

echo file_get_contents("zip:///var/www/html/arquivos.zip#lista-cursos.txt");

Olá Vinicius. Problema resolvido usando o /.

Havia também outro problema. No zip, o arquivo buscado, lista-cursos.txt, estava dentro de um diretório. Subi os arquivos um nível e funcionou também sem usar o caminho absoluto.

Obrigado novamente.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software