Scirpt PHP não funciona no Linux

1. Scirpt PHP não funciona no Linux

Tiago Medeiros de Lima
tiago0289

(usa Arch Linux)

Enviado em 23/10/2014 - 11:01h

Ola.

Tenho um script em php no qual o usuário faz o upload de um arquivo em PDF.
O usuário escolhe o arquivo, o script copia para uma pasta, e cria um link em um banco de dados.
Esse script funciona normalmente no Windows, já no linux o usuário escolhe o arquivo que NÃO é copiado para a pasta e mesmo assim é criado o link no banco de dados.
Já tentei dar permissão para a pasta:

$chmod 775 -R /home/tiago/htdocs/comp

$sudo chown -R tiago:tiago /home/tiago/htdocs

Mas nem um dos dois adiantou.
Acredito que talvez exista algum detalhe no script que precisa ser mudado ou alguma configuração do Lampp, mas não faço ideia do que.
Segue script:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php

include "conect.php";

$tipo = $_POST['tipo'];
$ref = $_POST['ref'];
$venc = $_POST['venc'];
$valor = $_POST['valor'];

$arquivo = $_FILES['arquivo'];
if ($arquivo['type'] == "application/pdf" )
{
if ($arquivo['size']>256000)
{
exit('Arquivo muito grande. Tamanho máximo permitido 250kb. O arquivo enviado contém '.round($arquivo['size']/1024).'kb');
}

$novonome = md5(mt_rand(1,10000).$arquivo['name']).'.pdf';
$dir = "/comp";
if (!file_exists($dir))
{
mkdir($dir, 0777);
}
$caminho = $dir.$novonome;
move_uploaded_file($arquivo['tmp_name'],$caminho);
echo "<script type='text/javascript'>alert('Arquivo enviado!')</script>";
echo "<meta http-equiv='refresh' content='1; url=index.html' />";
} else{
echo "Arquivo inválido. É permitido arquivos com extensão .PDF";
}
$sql_gravar = mysql_query("insert into contas (tipo, ref, venc, valor, arquivo) value ('$tipo', '$ref', '$venc', '$valor', '$caminho')");




header('location:contas.php');
?>



  


2. Re: Scirpt PHP não funciona no Linux

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 23/10/2014 - 11:23h

Vê se colocar a referencia no seu DOCUMENT_ROOT ajuda:


$caminho = $_SERVER['DOCUMENT_ROOT'] . "/comp";


3. Re: Scirpt PHP não funciona no Linux

Tiago Medeiros de Lima
tiago0289

(usa Arch Linux)

Enviado em 23/10/2014 - 17:54h

Não entendi em que parte eu devo colocar esse código!?


4. Re: Scirpt PHP não funciona no Linux

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 23/10/2014 - 23:35h

Onde vc faz referências a caminho de diretório no servidor, como no:


...
$dir = "/comp";


ficando:


...
$dir = $_SERVER['DOCUMENT_ROOT'] . "/comp";
...



5. Re: Scirpt PHP não funciona no Linux

Tiago Medeiros de Lima
tiago0289

(usa Arch Linux)

Enviado em 27/10/2014 - 10:47h

Não funcionou, mas obrigado mesmo assim.


6. Re: Scirpt PHP não funciona no Linux

Eduardo Weiland
eduardoweiland

(usa Fedora)

Enviado em 30/10/2014 - 21:15h

Você disse que usou esses comandos para dar permissões nas pastas:



$ chmod 775 -R /home/tiago/htdocs/comp
$ sudo chown -R tiago:tiago /home/tiago/htdocs


Bom, se esses foram exatamente os comandos que você executou, então eles não fizeram nada.

* No primeiro comando você deu permissões para que apenas o proprietário e o grupo possam escrever nesse diretório.
* No segundo você disse que o proprietário e o grupo daquela pasta é apenas você mesmo.

Resumindo, o usuário www-data que roda o servidor não pode escrever na pasta. O comando chown deveria indicar o grupo do servidor e não do seu usuário:


$ sudo chown -R tiago:www-data /home/tiago/htdocs








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts