Ir para conteúdo

POWERED BY:

Arquivado

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

bidu

Upload/download só funciona no localhost

Recommended Posts

Ola a todos

 

 

Estou com um pequeno problema, creio que seja alguma bobeira que ainda não percebi

 

 

Fiz uma pagina em php que faz upload e download no meu servidor web, por ftp. Ele funciona normalmente quando rodo localmente (localhost), mais se eu coloco esse arquivo no servidor web que é onde deve ficar, ele não funciona nem pra download nem pra upload.

 

Não é apresentado nenhum erro, apenas nada acontece, ja coloquei chmod dando permissão para o arquivo e para as pasta, mais não funfa e ja estou ficando loco.

 

Se alguem souber, desde ja agradeço

 

 

Abraço a todos

 

 

 

 

Leonardo

www.javenessi.com.br

-------------------------

Estou postando o meu código, são dois arquivos, esta tudo comentado, assim fica facil de entender

 

//testeftp.php

<?php
$ftp_user_name = "nome";
$ftp_user_pass = "senha";
$ftp_server = "servidor";

//local onde vai ser salvo o arquivo
$local_file = 'htdocs';

//pasta a salvar arquivo no servidor
$endereco = "public_html/leonardo";	

$arquivo = $_FILES['arquivo']['name'];
$arquivo_local = $_FILES['arquivo'];

//$tamanho = filesize($arquivo);
$tamanho = $_FILES['arquivo']['size'];
echo ("$tamanho bytes <br>"); 

$pastax = $endereco.$arquivo;

// Cria a conexão
$conn_id = ftp_connect($ftp_server);

// login com o nome de usuário e senha
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

//----------------INÍCIO CONFERE CONEXÃO--------------------
if ((!$conn_id) || (!$login_result)) {
		echo ("A conexão FTP falhou!");
		echo "Tentou conectar ao servidor $ftp_server para o usuário $ftp_user_name";
		exit;
	}
else {
		echo "Conectado ao servidor $ftp_server, para o usuário $ftp_user_name<br>";
	}
//-----------------FIM CONFERE CONEXÃO---------------------

//da permissão, não sei se esta certo
chmod($ftp_server,0777);
chmod($pastax,0777);;

//------------------------INÍCIO UPLOAD----------------------------------------------------------
if($_SERVER['REQUEST_METHOD']== 'POST' and !empty($_POST)){
	$nome_original_arquivo = $arquivo_local['name'];

	// separando nome da extensão
	list($nome_arquivo, $extensao_arquivo) = explode(".", $nome_original_arquivo);
	
	// gerando um nome aleatório e único
	$nome_aleatorio_arquivo = $nome_arquivo;
	
	// novo nome completo com extensão original
	$novo_nome_completo = $nome_aleatorio_arquivo . "." . $extensao_arquivo;
	
	// movendo o arquivo do diretório temporário do PHP para um novo local
	if (!move_uploaded_file($arquivo_local['tmp_name'], "./$novo_nome_completo")) {
		$erro .= ". Erro no envio do arquivo.\\n";
	}
	if ($erro == "") {
		echo $erro = "Arquivo enviado com sucesso";
	}
// carrega o arquivo no servidor
$upload = ftp_put($conn_id, $pastax, $arquivo, FTP_ASCII);

// confere o upload do arquivo
if (!$upload) {
		echo "O upload FTP falhou!";
	} 
else {
		echo "Carregado o arquivo no servidor $ftp_server como $arquivo";
		//deleta arquivo do apache
		unlink($arquivo);
	}		
}
//------------------------FIM UPLOAD------------------------------------------------


//--------------INÍCIO DOWNLOAD-----------------------
// obtém o conteúdo do diretório atual
$contents = ftp_nlist($conn_id, "public_html/leonardo");

for($i = 0; $i < sizeof($contents); $i++){
$partes = $contents[$i];
	
//separa o nome do arquivo do seu endereco	
$parte = explode("/", $partes);
$parte = $parte[2];


$tam = ftp_size($conn_id, "public_html/leonardo/$parte");

$html .= "<tr><td>$parte    tamanho $tam  bytes</td><td><a href='verifica.php?parte=$partes&nome=$parte' class='a'>download<a></td></tr>";
}
//recebe resposta do verifica.php
if($_SERVER['REQUEST_METHOD']== 'GET' and !empty($_GET)){
	$resposta = $_GET['resposta'];
	echo($resposta);
}	

//-------------------FIM DOWNLOAD----------------------------------------
ftp_close($conn_id);

?>

</script>
<html>
<head><title></title>
<style type="text/css">	
	.a{color:#000000;text-decoration:none;font-weight:bold;font-family:arial;font-size:14px;font-style: italic}
	.a:hover{color:#ff8C00;text-decoration:none;font-weight:bold;font-family:arial;font-size:16px;font-style: italic}
	.b{color:#000000;font-weight:bold;font-family:arial;font-size:14px;font-style: italic};
</style>

</head>
<body>
<form action="<?= $_SERVER['SCRIPT_NAME'] ?>" method="POST" enctype="multipart/form-data" name="login">
<hr>
<div align="center" valign="top" class="b">UPLOAD</div>
<div>
	Foto:<input name="arquivo" type="file" id="arquivo"><br>
	Comentário:<br>
	<textarea name="comentario" cols="50"></textarea><br>
	<input type="submit" value="Enviar">
</div><br>
<hr>
<div align="center" valign="top" class="b">DOWNLOAD</div>
<table border="0">
	<?=$html?>
</table>
<hr>
</form>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu servidor localhost é Windows ou Linux? É o mesmo sistema do servidor onde vão ficar os arquivos na net?

 

Bom, verifique novamente as permissões e os caminhos dos diretórios, pois sem uma mensagem de erro fica difícil... :)

 

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

//verifica.php

 

<?php
$parte = $_GET['parte'];;
$nome = $_GET['nome'];

$ftp_user_name = "nome";
$ftp_user_pass = "senha";

$local_file = 'htdocs';
$ftp_server = "servidor";

// Cria a conexão
$conn_id = ftp_connect($ftp_server);

// login com o nome de usuário e senha
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

//faz o download
if(ftp_get($conn_id,$local_file, $parte, FTP_ASCII)){
	$resposta = "download realizado com sussesso";
	rename("htdocs", $nome);
}
else{
	$resposta = "falha no download";
}
//redireciona o arquivo baixado do htdocs para a pasta indicada
rename($nome, "c:/teste/$nome");
header("location: testeftp.php?resposta=$resposta");
ftp_close($conn_id);
exit;
?>
------------------------------

Não sei disse se é linux, mais o engraçado é que este código quando roda na minha máquina, acessando o servidor web por ftp, ele funciona normalmente

fazendo upload, download, lista os arquivos existentes e me da o tamanho dos arquivos que no servidor web existem.

 

Agora quando coloco esse arquivo no servidor web e acesso por httpd, a pagina abre normal, ele tbm lista os arquivos e me da o tamanho, mais o upload e download não funcionam.

 

Sera que tem que muda alguma coisa quando o arquivo esta na web? tem alguma diferença de quando esta na maquina loal(localhost). Não sei porq não funfa, ja pesquisei em varios foruns e tem mais pessoas com a mesma duvida, mais não encontrei a resposta.

 

 

Valeu a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa dar CMOD 777 na pasta que vai receber o arquivo de upload.

Permissão para Ler, Gravar e Executar.

 

No teu programa FTP vendo as propriedades da pasta, você vê isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu coloquei assim no código

 

//permissão dos diretórios e arquivos

chmod($arquivo, 0777);

chmod($arquivo_local, 0777);

chmod($ftp_server, 0777);

chmod($endereco, 0777);

chmod($pastax, 0777);

 

Dei permissão em tudo oque podia pelo php mesmo, mais mesmo assim não vai.

 

Engraçado que esse programa usando no localhost, eu consigo mandar arquivo pro servidor web, e não me pede autorização.

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.