Ir para conteúdo

POWERED BY:

Arquivado

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

churrumino

Problema com envio de arquivo

Recommended Posts

Olá, pessoal!

 

Eu novamente por aqui, mais uma vez com um problema referente à Extranet da empresa. Para quem não viu, tive um problema já com ela anteriormente que foi resolvido.

 

Dessa vez meu problema é na página de envio de arquivos, que está me retornando uma mensagem de erro no momento que eu clico em enviar.

 

Este é o código referente à página de envio de arquivo (upload.php)..

 

 

<?php
session_start();
if($_SESSION['logado'] != "parangaricutirimirruaro")
	header("Location: login.php");
?>

<body>
<div class="container">
<div id="div_centro">
	<!-- incluir cabeçalho e menu -->
	<?php
		include("cabecalho_admin.php");
		$pg = 'upload';
		include("menu_admin.php");
	?>
	<div id="div_principal">

		<form action="../acoes/enviar_arq.php" method="post" enctype="multipart/form-data">
			<div class="formulario_espaco"><div class="label_form">Arquivo</div><input type="file" name="arquivo"></div>
			<div class="formulario_espaco"><div class="label_form">Descrição</div><textarea name="descricao" cols="30"></textarea></div>
			<?php
			if(!empty($_REQUEST['subs']))
				echo("\n<input type=\"hidden\" name=\"subs\" value=\"".$_REQUEST['arq']."\">");
			?>
    		<br>
			<div class="container">
				<input type="submit" value="Enviar">
				<input type="reset" value="Limpar formulário">
			</div>
			<br>
			<div class="mensagens">
			<?php
				if(isset($_REQUEST['erro']))
					echo("Falha no envio do arquivo!");
				if(isset($_REQUEST['erro1']))
					echo("Digite a descrição!");
				if(isset($_REQUEST['erro2']))
					echo("Falha durante o envio!");
				if(isset($_REQUEST['up_ok']))
					echo("Arquivo enviado com sucesso!");
			?>
			</div>
	    </form>
	</div>
</div>
</body>
</html>

 

E este é o código referente ao enviar_arq.php..

 

<?php

require("../uteis/conexao.php");
session_start();

if($_FILES['arquivo']['error']){
	header("Location: ../paginas/upload.php?erro=x");
	exit;
}

if(empty($_POST['descricao'])){
	header("Location: ../paginas/upload.php?erro1=x");
	exit;
}

$descr = $_POST['descricao'];
$arq = $_FILES['arquivo']['name'];
$arq_tmp = $_FILES['arquivo']['tmp_name'];

$ext = strtolower(substr(strrchr($arq, "."),1));
$nome = date("YmdHis").'_'.sha1(substr($arq, '.', -(strlen($ext) + 1)));

$destino = "../arquivos/".$nome.'.'.$ext;

if(move_uploaded_file($arq_tmp, $destino)){
	pg_query("insert into arquivos (id_usr, nome, caminho, versao, data_up, descr, ext) values (".$_SESSION['id'].", '$arq', '".$nome.'.'.$ext."', 1, '".date("Y-m-d")."', '$descr', '$ext')");

	$sql = pg_query("select last_value as ultimo from arquivos_id_seq");
	$linha = pg_fetch_assoc($sql);
	pg_query("insert into permissoes (id_usr, id_arq) values (".$_SESSION['id'].", ".$linha['ultimo'].")");
}else{
	header("Location: ../paginas/upload.php?erro2=x");
	exit;
}

$sql3 = pg_query("select versao, nome from arquivos where id = ".$linha['ultimo']);
$linha3 = pg_fetch_assoc($sql3);

if(!empty($_POST['subs'])){
	pg_query("delete from permissoes where id_arq = ".$_POST['subs']." and id_usr = ".$_SESSION['id']);
	pg_query("update permissoes set id_arq = ".$linha['ultimo']." where id_arq = ".$_POST['subs']);
	pg_query("update arquivos set versao = versao + 1 where id = ".$linha['ultimo']);

	$sql1 = pg_query("select nome, caminho from arquivos where id = ".$_POST['subs']);
	$linha1 = pg_fetch_assoc($sql1);
	$arquivo = realpath("../arquivos/".$linha1['caminho']);
	pg_query("delete from arquivos where id = ".$_POST['subs']);
	unlink($arquivo);

	$sql2 = pg_query("select id_usr from permissoes where id_arq = ".$linha['ultimo']." and id_usr <> ".$_SESSION['id']);
	while($linha2 = pg_fetch_assoc($sql2))

 

Alguém tem alguma ideia do que possa estar acontecendo?

 

Grato pela atenção de todos.

 

EDIT: Ah, esqueci de dizer que o erro que estou recebendo é "Falha durante o envio!"

Compartilhar este post


Link para o post
Compartilhar em outros sites

pelo treco de código:

 

        if(move_uploaded_file($arq_tmp, $destino)){

       }else{
               header("Location: ../paginas/upload.php?erro2=x");
               exit;
       }

vemos que você vai receber o erro=2, se não subir o arquivo.

 

a pasta de destino está com permissão de escrita ?

confira se o caminho:

$destino = "../arquivos/".$nome.'.'.$ext;
echo $destino;

está correto, apartir do diretório do arquivo q envia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

--

Olá, Carlos!

 

Editei a mensagem principal, a mensagem de erro ao selecionar o arquivo e clicar na opção de enviar é "Falha durante o envio!".

--

Oi, William!

 

A permissão da pasta está drwxr-xr-x, creio que esteja correta.

 

O caminho creio que esteja correto também, pois consigo fazer o download dos arquivos.

 

Verifiquei aqui que apesar da pasta estar com permissão drwxr-xr-x, os arquivos estão com permissão -rw-r--r--. Alguém sabe me dizer se isso está correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

apenas para teste, coloque permissão 777 na pasta. rwxrwxrwx(pois não sei qual é o usuário do teu php)

 

um teste:

 

 

$destino = "../arquivos/".$nome.'.'.$ext;


echo '<a href="../arquivos/">../arquivos/</a>';
exit();

if(move_uploaded_file($arq_tmp, $destino)){

clique nesse link, e veja se "abre" no navegador a pasta arquivos, ou se dá 404.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não.. foi apenas um teste.. 777 é "inseguro".

 

tente baixar para 666, ou descubra qual é o usuário do teu php.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com 666 deu "Falha durante o envio!" novamente.

 

Como eu posso fazer pra descobrir o meu usuário do php?

 

Não sei se é permitido, se não for a moderação pode apagar, mas vou dar um "up" na minha dúvida.

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.