Ir para conteúdo

POWERED BY:

Arquivado

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

jcalebe

[Resolvido] Apagar arquivo criado por script PHP no servidor

Recommended Posts

Olá!

 

A alguns dias eu estava estudando um sistema de upload com o PHP. Localmente, em plataforma windows ele funcionou 100%. Mas quando mandei pro servidor Linux ele não quis funcionar (não enviava o arquivo para a pasta selecionada e colocava uma barra nome dele).

 

Aí eu desisti de usá-lo, mas não consegui apagar os arquivos que ele criou por conterem uma barra ("/") no nome. Como apago esses arquivos através do FTP?

 

Uso o FileZilla.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ja verificou as permissões no diretório?? da um chmod 777

 

CHMOD não influencia em conexões via FTP.

 

usa a função unset()

 

unset() não vai resolver porque contém barra no nome. A função vai "pensar" que é um arquivo em uma pasta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

CHMOD não influencia em conexões via FTP.

 

Claro que influencia... Se você não consegue apagar os arquivos, 99% de certeza que é porque você não ter permissão para isto com o usuário que faz a conexão pelo FTP. Para confirmar, ao tentar excluir, no espaço superior aparecerá uma mensagem. Veja qual é a mensagem que aparece lá.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ja verificou as permissões no diretório?? da um chmod 777

 

Credo!

Nunca faça isso, a não ser que queira ter um sistema inseguro

 

 

 

CHMOD não influencia em conexões via FTP.

 

Claro que influencia... Se você não consegue apagar os arquivos, 99% de certeza que é porque você não ter permissão para isto com o usuário que faz a conexão pelo FTP. Para confirmar, ao tentar excluir, no espaço superior aparecerá uma mensagem. Veja qual é a mensagem que aparece lá.

 

Carlos Eduardo

 

 

Só complementando, você tem que ver o dono (owner) do arquivo criado e o dono do diretório em que ele está. É para ser o mesmo dono, aí uma permissão 700 já é suficiente. Normalmente diretórios ficam com 755, no máximo 775, mas NUNCA 777

Em suma, você precisa ter permissão de escrita num diretório para poder remover um arquivo que pertença a ele

 

 

Tem que saber o mínimo de permissões para mexer com isso, senão a gente vê umas besteiras como "dar 777"...

 

Bom tutorial sobre chmod:

http://forum.imasters.com.br/index.php?/topic/299194-chmod/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente, não tem nada a ver com CHMOD ou permissão! A questão é que há uma barra ( / ) no nome do arquivo, e não consigo renomear nem apagar este arquivo específico!

 

O arquivo é imagens/foto1.jpg

 

O quando digito o nome dele no script para deletar ou tento deletar via FTP, eles "acham" que existe um arquivo chamado foto1.jpg dentro de uma pasta chamada imagens, quando na verdade o arquivo tem esse nome, ou seja, por causa do nome ele é interpretado como um arquivo dentro de uma pasta, quando ele é só um arquivo.

 

Podem me ajudar agora?

 

CHMOD não influencia em conexões via FTP.

 

Claro que influencia... Se você não consegue apagar os arquivos, 99% de certeza que é porque você não ter permissão para isto com o usuário que faz a conexão pelo FTP.

Carlos Eduardo

 

Cara, se é o próprio FTP que altera as permissões do CHMOD, como isso vai surtir algum efeito nele?

Compartilhar este post


Link para o post
Compartilhar em outros sites

barras são proibidas em nomes de arquivos. Isso vale para todos os SO's, até onde sei

Não faz sentido ter um arquivo cujo nome tem uma barra. o SO não cria um arquivo assim.

 

Veja:

 

com PHP

beraldo@orion:/tmp$ cat file.php 
<?php
$filename = 'dir/arq.txt';
file_put_contents( $filename, 'oi, sou um texto' );
?>
beraldo@orion:/tmp$ php file.php 
PHP Warning:  file_put_contents(dir/arq.txt): failed to open stream: No such file or directory in /tmp/file.php on line 3

 

Direto no shell do Linux

beraldo@orion:/tmp$ touch dir/arq.txt
touch: não foi possível tocar `dir/arq.txt': Arquivo ou diretório não encontrado

 

 

Você vê esse arquivo no FTP?

Posta um print screen, pois isso é novidade para mim.

 

 

Qual SO seu servidor roda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo, uso um servidor Linux. O arquivo foi criado por um script de upload de arquivos que deu errado. Na verdade, não é um arquivo, SÃO 4. Todos resultado de falhas no script que fiz.

 

Imagem:vpw7qs.jpg

http://i53.tinypic.com/vpw7qs.jpg

 

Tem outros arquivos assim em outra pasta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

está cheirando a uso errado de addslashes... :assobiando: :P

 

É barra invertida. Isso não tem problema mesmo, em Linux. Mas aqui removo sem problema:

 

beraldo@orion:/tmp/teste$ touch dir\\file.txt
beraldo@orion:/tmp/teste$ ls
dir\file.txt
beraldo@orion:/tmp/teste$ rm dir\\file.txt 
beraldo@orion:/tmp/teste$ ls
beraldo@orion:/tmp/teste$

 

Quando seleciona o arquivo e remove o que acontece? Só fala que não pode remover? Não aparece nenhuma mensagemd e erro no log do Filezilla?

 

VocÊ tem acesso shell (SSH) ao sercidor?:?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Erro do FileZilla:

23iymw3.jpg

Vixi... está acessando o FTP via Windows?

Capaz que seja conflito do Windows. Acho difícil, já que o FTP está conectado em Linux... mas sei lá...

 

 

Sim, tenho acesso ao SSH.

 

então loga lá e manda um "rm", como postei antes :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um script php pra fazer o rename

 

http://php.net/rename

 

ja fiz scripts 'piores'.

se você não conseguir acessar o arquivo pelo nome dele, roda em tudo *.* e sai removendo a \

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Finalmente consegui, graças ao William Bruno. Fiz o seguinte:

 

<?php
echo (rename(".\avatar.gif", "1.txt"))? '1 Ok<br />':'Falha <br />';
echo (rename("\avatar.gif", "2.txt"))? '2 Ok<br />':'Falha <br />';
echo (rename("\\files\avatar.gif", "3.txt"))? '3 Ok<br />':'Falha <br />';
echo (rename("files\avatar.gif", "4.txt"))? '4 Ok':'Falha';
?>

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.