gravar arquivo txt

Enviada por Neto Sales 
Neto Sales
gravar arquivo txt
16 de May de 2017 às 08:10PM
Estou estudando um sistema php que salva o resultado do processamento num arquivo txt. Estava tudo funcionando até eu implantar a parte do gravar o arquivo txt (orders.txt) numa pasta do meu servidor. Agora aparece o http error 500 e não salva nada. Gostaria que alguém desse uma olhada no arquivo pra ver se encontra o erro. Estou executando o arquivo num navegador google chrome no windows 7, e os arquivos do php estão num servidor linux ubuntu (12.04). Tava funcionando tudo certinho quando eu exibia o resultado na tela apenas. Depois que implementei a rotina de salvar no arquivo txt, passou a abrir esse erro 500. Vejam o código original:
<html>
<head>
<title>Bob's auto Parts - Order Results</title>
</head>
<body>
<h1>Bob's Auto Parts</h1>
<?php
// cria nomes de variaveis abreviados
$tireqty = $_POST['tireqty'];
$oilqty = $_POST['oilqty'];
$sparkqty = $_POST['sparkqty'];
$address = $_POST['address'];
$DOCUMENT_ROOT = $_SERVER_VARS['DOCUMENT_ROOT'];
?>
<?php
echo '<p>Pedido processado.</p>';

$date = date('H:i, jS F');
echo $date;
?>
<h2>Resultado pedido</h2>
<?php
echo '<p>A sua encomenda é a seguinte: </p>';

$totalqty = 0;
$totalqty = $tireqty + $oilqty + $sparkqty;
if($totalqty == 0)
{
echo '<font color=red size=5>';
echo 'Você não selecionou nenhum item na página anterior!<br />';
echo '</font>';
}
else
{
if ($tireqty>0)
echo $tireqty.' pneus<br />';
if ($oilqty>0)
echo $oilqty.' litros de óleo<br />';
if ($sparkqty>0)
echo $sparkqty.' velas de ignição<br />';
}
if($tireqty<10)
$discount = 0;
elseif($tireqty >= 10 && $tireqty <= 49)
$discount = 5;
elseif($tireqty >= 50 && $tireqty <= 99)
$discount = 10;
elseif($tireqty >= 100)
$discount = 15;
echo 'Total de itens pedido: '.$totalqty.'<br />';
$totalamount = 0.00;
define('TIREPRICE', 100 - $discount);
define('OILPRICE', 10);
define('SPARKPRICE',4);
$totalamount = $tireqty * TIREPRICE + $oilqty * OILPRICE + $sparkqty * SPARKPRICE;
echo 'Subtotal: R$'.number_format($totalamount,2).'<br />';
$taxrate = 0.10; // o imposto de vendas local é 10%
$totalamount = $totalamount * (1 + $taxrate);
echo 'Total incluindo impostos: $'.number_format($totalamount,2).'<br />';
echo 'Entregar em: '.$address. '<br />';
switch($find)
{
case 'a' :
echo '<p>Cliente Regular.</p>';
break;
case 'b' :
echo '<p>Cliente Obtido por propaganda de TV.</p>';
break;
case 'c' :
echo '<p>Cliente Lista Telefônica.</p>';
break;
case 'd' :
echo '<p>Cliente Boca a Boca.</p>';
break;
default :
echo '<p>Não sabemos como o Cliente nos encontrou.</p>';
break;
}
$outputstring = $date."\t".$tireqty." pneus \t".$oilqty." Óleo\t"
$sparkqty." Velas de Ignição\t\R$".$totalamount
."\t". $address."\n";
// abre o arquivo para anexar
fopen("$DOCUMENT_ROOT/../orders/orders.txt", 'ab');
if (!$fp)
{
echo '<p><strong> Seu pedido não poderá ser processado nesse momento. '
.'Por favor, tente novamente mais tarde.</strong></p></body></html>';
exit;
}
fwrite($fp, $outputstring, strlen($outputstring));
fclose($fp);
echo '<p>Pedido Gravado!</p>';
?>
</body>
</html>
José Ângelo Lefundes Coelho
Re: gravar arquivo txt
18 de May de 2017 às 12:29PM
Verifique as permissões do diretório onde quer gravar o tal arquivo no seu servidor.
Neto Sales
Re: gravar arquivo txt
19 de May de 2017 às 09:32PM
Eu tinha visto isso José,por via das dúvidas até tinha dado permissões na pasta principal (chmod 777) e em todas as subpastas, mas o problema persistiu. Então achei um outro arquivo funcional, e substitui pra avançar nos estudos. Deixei o arquivo com problema salvo pra voltar nele quando tiver entendendo melhor o que estou fazendo. Por enquanto já me satisfaço vendo rodar.
Wendell
Re: gravar arquivo txt
17 de June de 2017 às 07:53PM
Se você tem certeza que não é questão de permissão, então deve ser o caminho do arquivo que está errado.

Tenha certeza de que o caminho passado em fopen() esteja correto.

fopen("$DOCUMENT_ROOT/../orders/orders.txt", 'ab');

Qual a mensagem que é exibida quando dá o erro 500?
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.