Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcelo Garbin

[Resolvido] Class ZipArchive

Recommended Posts

Boa tarde pessoal, tudo certo?

 

Tenho uma dúvida referente a classe ZipArchive.

 

Seguinte usei o seguente código:

$zip = new ZipArchive;
  if ($zip->open("../../downloads/$nomepasta/$upload_name") === TRUE) {
	  $zip->extractTo("../../donwloads/$nomepasta/");
	  $zip->close();
  } else {
	  echo "Falha ao descompactar o arquivo!";
  }

 

Até ai está tudo ok, código funciounou certinho, descompactou o arquivo que estava na pasta setada. Porém ai que vem o problema, quando ele descompactou acabou criando outras pastas dentro da pasta raiz, porém sem o nome do proprietário da pasta(nome user ftp). Ficou apenas nobody nobody(isso eu vi no filezilla).

Agora não consigo excluir estas pastas, pois está sem proprietário e eu não sou SuperAdministrador.

 

Como faço para resolver isso? e como posso fazer que quando for descompactar os arquivos já dar um chmod ou permissão 0777 ??

 

Desde já agradeço a todos.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Como faço para resolver isso?

Altere as permissões dos arquivos usando o PHP

 

e como posso fazer que quando for descompactar os arquivos já dar um chmod ou permissão 0777 ??

 

De duas formas:

 

Usando linha de comando:

$zip->extractTo("../../donwloads/$nomepasta/");
exec("chmod -R 0777 ../../donwloads/$nomepasta/");

 

Usando RecursiveDirectoryIterator:

$zip->extractTo("../../donwloads/$nomepasta/");

$rdi = new RecursiveDirectoryIterator("../../donwloads/$nomepasta/");
$iterator = new RecursiveIteratorIterator($rdi);

foreach($iterator as $entry) {
 chmod( realpath($entry->getPathname()), 0777 );
}

 

Eu faria com RecursiveDirectoryIterator.

 

@braços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bah show, gostei, não conhecia o RecursiveDirectoryIterator.

Teria como explicar mais ou menos ele(esse código que me passou)?

Posso usar o RecursiveDirectoryIterator para deletar todos os arquivos de uma só vez então ?

Outra coisa as permissões nos arquivos ficaram todas certas com 0777 porém ainda não consigo deletar os arquivos e as pastas pois não está com o usuário ftp como "dono" delas. Teria algum jeito de fazer isso nesta função?

 

Obrigado pela ajuda.

 

 

Altere as permissões dos arquivos usando o PHP

 

 

 

De duas formas:

 

Usando linha de comando:

$zip->extractTo("../../donwloads/$nomepasta/");
exec("chmod -R 0777 ../../donwloads/$nomepasta/");

 

Usando RecursiveDirectoryIterator:

$zip->extractTo("../../donwloads/$nomepasta/");

$rdi = new RecursiveDirectoryIterator("../../donwloads/$nomepasta/");
$iterator = new RecursiveIteratorIterator($rdi);

foreach($iterator as $entry) {
 chmod( realpath($entry->getPathname()), 0777 );
}

 

Eu faria com RecursiveDirectoryIterator.

 

@braços

Compartilhar este post


Link para o post
Compartilhar em outros sites

?????

As permissões estão certas (777) e não pode remover? Que bruxaria é essa? hehehehe

777 significa que qualquer usuário, inclusive o publico, pode remover.

 

Sobre o RDI, é bem simples: ele itera por todas as pastas e diretórios dentro do caminho especificado.

Você ainda poderia aplicar filtros, para pegar somente arquivos, somente arquivos de uma determinada extensão, com expressão regular, etc. É bem útil mesmo.

 

BEGIN EDIT

Complementando:

Este link ilustra o que eu quis dizer com "até o publico".

END EDIT

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso ai é bruxaria de Cliente FTP hehe, não conseguia excluir via Filezilla mesmo estando 777... Consegui excluir via PHP mesmo, com unlink. Agora está tudo certo..

Muitoo obrigado mesmo, e obrigado por apresentar o RDI para mim, vou ocupar ele nos próximos projetos. Muito bom mesmo.

 

Tópico Resolvido!

 

Abraço e fique com Deus também. Até +

 

?????

As permissões estão certas (777) e não pode remover? Que bruxaria é essa? hehehehe

777 significa que qualquer usuário, inclusive o publico, pode remover.

 

Sobre o RDI, é bem simples: ele itera por todas as pastas e diretórios dentro do caminho especificado.

Você ainda poderia aplicar filtros, para pegar somente arquivos, somente arquivos de uma determinada extensão, com expressão regular, etc. É bem útil mesmo.

 

BEGIN EDIT

Complementando:

Este link ilustra o que eu quis dizer com "até o publico".

END EDIT

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.