+2

O que posso fazer para deletar um arquivo que está no ftp via um php?

criado por Ricardo Maranhão em 14/12/2003 7:09am
Nenhuma descrição foi enviada.

Lista de Respostas:

0
15/12/2003 10:53am
(~21 anos atrás)
a respondeu:
Bem, caso o arquivo esteja num diretório de FTP do seu servidor, recomendo que você use a função ulink:

ulink("arquivo.exe");

Caso contrário, use as funções de gerenciamento de FTP do PHP mesmo...
elas são bem simples...

0
15/12/2003 12:40pm
(~21 anos atrás)
Marcio João Oliari respondeu:
Crie uma conexao ao servidor, utilizando as funcoes de ftp e envie o comando "ftp_delete", conforme codigo abaixo:

<?php
// ftp variables

$ftp_server = "nome do servidor";
$ftp_user_name = "nome do usuario de ftp";
$ftp_user_pass = "senha do usuario de ftp acima";
$delete_file = "arquivo no servidor que se deseja excluir";

// set up basic connection
$conn_id = ftp_connect("$ftp_server");

// login with username and password
$login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass");

// check connection
if ((!$conn_id) || (!$login_result)) {
echo "Ftp connection has failed!";
echo "Attempted to connect to $ftp_server for user $ftp_user_name";
die;
} else {
echo "Connected to $ftp_server, for user $ftp_user_name";
}

// delete the file
$delete = int ftp_delete ($conn_id, "$delete_file")


// check delete status
if (!$upload) {
echo "Ftp delete has failed!";
} else {
echo "Deleted $delete_file ";
}

// close the FTP stream
ftp_quit($conn_id);
?>

0
15/12/2003 12:40pm
(~21 anos atrás)
Marcio João Oliari respondeu:
Crie uma conexao ao servidor, utilizando as funcoes de ftp e envie o comando "ftp_delete", conforme codigo abaixo:

<?php
// ftp variables

$ftp_server = "nome do servidor";
$ftp_user_name = "nome do usuario de ftp";
$ftp_user_pass = "senha do usuario de ftp acima";
$delete_file = "arquivo no servidor que se deseja excluir";

// set up basic connection
$conn_id = ftp_connect("$ftp_server");

// login with username and password
$login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass");

// check connection
if ((!$conn_id) || (!$login_result)) {
echo "Ftp connection has failed!";
echo "Attempted to connect to $ftp_server for user $ftp_user_name";
die;
} else {
echo "Connected to $ftp_server, for user $ftp_user_name";
}

// delete the file
$delete = int ftp_delete ($conn_id, "$delete_file")


// check delete status
if (!$upload) {
echo "Ftp delete has failed!";
} else {
echo "Deleted $delete_file ";
}

// close the FTP stream
ftp_quit($conn_id);
?>

0
15/12/2003 4:54pm
(~21 anos atrás)
Diogo Gomes respondeu:
Creio que a função 1ª resposta seja unlink()... Essa é uma ótima idéia, mas acho que vai funcionar se estiver no mesmo servidor.

0
15/12/2003 5:43pm
(~21 anos atrás)
é o que eu ia falar existe um erro no nome da função
do primeiro post sendo unlink() o correto

informações sobre a função em www.php.net/unlink

eu acho bem melhor (caso funcione) usar a unlink do que tudo isso com funções de FTP do servidor, de qualquer forma se não houver alternativa use as dicas acima.

Espero ter ajudado

0
27/12/2003 4:43pm
(~21 anos atrás)
Você pode criar um formulário que você possa colocar o nome do arquivo que deseja apagar.

No arquivo que será o action do formulário coloque o código.

<?
unlink("$variavel"); //essa variavel eh a do formulario.
?>

Pronto! Irá apagar o arquivo do servidor ftp.

0
30/12/2003 7:44pm
(~21 anos atrás)
Dzaia Cuck respondeu:
Seguinte:

Vc nao pode fazer chegado, pois "todos" os provedores desabilitam a funcao "delete" do php e tbm os comandos do sistema tipo exec, system, ``, etc...

por isso oq vc pode fazer é o seguinte:

crie uma funcao (ex.: teste_delete()) e dentro dela
escreva a seguinte rotina:

function mid_delete($arquivo){

// abre arquivo
$abre = fopen($arquivo, "w") or die("<font color='red'>O arquivo não existe!!!</font>");
// escreve um 'x' no arquivo
@fputs($abre, 'x');
// fecha arquivo
@fclose($abre);

$nomearquivolimpo = str_replace("/","",$arquivo);//tirabarras do endereco
$nomearquivolimpo = str_replace(".","",$nomearquivolimpo); // tira pinto do nome do arquivo

rename($arquivo, $nomearquivolimpo.".lix"); // renomeia extensao do arquivo para ".lix"

//fecha funcao
}


Oq essa rotina faz é abrir o arquivo e destruir o seu conteudo, ou seja nao elimina mas inutiliza deixando-a apenas com 1b... ou seja com praticamente nada... e de tempos em tempos vc entra la e apaga todos os arquivos .lix(lixo)

Falow
Izaias

0
30/12/2003 8:46pm
(~21 anos atrás)
Alessander Thomaz respondeu:
Todos os servidores é meio sacanagem né.
Depende, os gratuitos por exemplo proibem.
Mas geralmente os servidores pagos não tem como impedir isso o mínimo que um site legal precisa é de um módulo para subir imagens, alterar o conteúdo. Coisas do tipo.

Um problema que tive com unlink uma vez foi de permissão.
Mas foi só eu dar chmod 777 (ou seria 0777? nunca lembro, acho que é a segunda por ser octal, mas olho na doc quando preciso) no arquivo
e apago depois.

Uma coisa boa para usar é colocar @ (arroba) antes do nome da funcao para evitar mandar erros para o navegador

algo como:

if (@unlink($arquivo) {
echo "Arquivo $arquivo excluído com sucesso.";
} else {
echo 'Erro ao excluir arquivo';
}

Se não tiver o arroba o script irá gerar um erro na tela.
O que é péssimo, pois indica informações do servidor.

Nossa escrevi bastante.
Boa sorte.

0
31/12/2003 7:15am
(~21 anos atrás)
Alessander é a segunda opção mesmo

por ser octal

desta forma qualquer permissão como 733 ficaria na função

chmod("/dir/legal/", 0733);

é útil fazer isso com alguns scripts que criam diretórios por exemplo
as permissões dele estão com o usuário que executa o webserver comumente nobody.

espero ter ajudado

0
31/12/2003 7:54pm
(~21 anos atrás)
Alessander Thomaz respondeu:
Grande Marcelo, tudo beleza.
Valeu pela confirmação, eu nunca lembro dessas coisas.
Mas para isso existe o super manual, com uma super equipe que o faz ser como é. :-), acabo ficando meio preguiçoso, :-)

Falando em ftp, tem um artigo muito bom do bob frank sobre FTP entre servidores. Quem curtir o assunto vale a pena dar uma olhada no artigo.

Feliz ano novo a todos.
Alessander




0
05/02/2004 5:59am
(~21 anos atrás)
Quanto a questão de todos os servidores bloquearem, realmente ficou meio forçado. Se você utiliza um servidor pago, entre em contato com o administrador, e peça para ele criar uma pasta com permissão para upload e delete. Desta forma você evitará quaisquer problemas futuros (invasões), pois a permissão 777 dada por você, funciona, mas é muito frágil.

Edson Marco

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)