Não localiza arquivo na pasta
Pessoal é o seguinte, tenho o script que quando uso ele em ambiente de teste no windows com xamp ele localiza o arquivo que preciso tudo perfeito, com caminho absoluto até a pasta.
Porem quando fiz o upload do sistema para o servidor linux debian ele não localiza mais o arquivo, creio que seja o caminho a baixo o código.
o caminho absoluto da pasta onde se encontram os arquivo é: /var/www/html/nfe/arquivos/
já tentei todas as formas a baixo, quando ele chega no if a comparação não bate e ele salta.
Porem quando fiz o upload do sistema para o servidor linux debian ele não localiza mais o arquivo, creio que seja o caminho a baixo o código.
o caminho absoluto da pasta onde se encontram os arquivo é: /var/www/html/nfe/arquivos/
já tentei todas as formas a baixo, quando ele chega no if a comparação não bate e ele salta.
<?php
$pasta = 'arquivos/';
//$pasta = '/arquivos/';
//$pasta = './arquivos/';
//$pasta = '../arquivos/';
//$pasta = '../nfe/arquivos/';
//$pasta = 'nfe/arquivos/';
//$pasta = '/nfe/arquivos/';
//$pasta = '/html/nfe/arquivos/';
//$pasta = '/var/www/html/nfe/arquivos/';
$xmlNfe = $pasta."Nfe".$_POST["arquivo"]."-nfe.xml";
$pdfNfe = $pasta."Nfe".$_POST["arquivo"]."-nfe.pdf";
if(isset($xmlNfe) && file_exists($xmlNfe) && ($pdfNfe) && file_exists($pdfNfe) ){ // faz o teste se a variavel não esta vazia e se o arquivo realmente existe
$zip = new ZipArchive();
if( $zip->open( '/var/www/html/nfe/zips/arquivo.zip',ZipArchive::CREATE ) === true){
$zip->addFile($pdfNfe , 'Danfe.pdf');
$zip->addFile($xmlNfe , 'xml.xml');
$zip->close();
}
$dir = '/var/www/html/nfe/zips/';
$arquivo = 'arquivo.zip';
$var = "application/force-download";
if(file_exists($dir.$arquivo)){
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: $var");
header("Content-Disposition: attachment; filename=\\"".basename($dir.$arquivo)."\\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($dir.$arquivo));
readfile($dir.$arquivo);
}
unlink($dir.$arquivo);
}else{
echo "<script>window.location='index.php';alert('CHAVE da NFe não condiz com uma NFe valida ou foi digitada incorretamente! Tente novamente!');</script>";
exit;
}
exit;
Leonardo Freitas
Curtidas 0
Melhor post
Aparecida Gonçalves
27/09/2017
Olá Leonardo,
tudo bem?
Quando disponibilizamos uma página web(site), o caminho padrão no servidor é o conteúdo inserido na pasta www ou public_html. Então, teoricamente tudo o que está contido em public_html, faz parte do site publicado.
Dentro dela você pode conferir seus arquivos, diretórios, scripts, entre outros.
Por exemplo:
arquivo: index.php
arquivo: empresax.php
arquivo: meuscript.php
diretorio: imagens
diretorio: notafiscal
Supondo que dentro do diretório notafiscal, temos o subdiretório: arquivos.
Dessa forma, para que o arquivo meuscript.php (que está na raiz) localize o subdiretório arquivos, eu tenho que informar o seguinte caminho:
$pasta = '/notafiscal/arquivos/';
No Xampp é comum criarmos a pasta com o nome do nosso projeto.
Pode ser que vc tenha ai, o caminho: C:\\xampp\\htdocs\\meuprojetox\\
Só que no servidor a pasta meuprojetox não será necessária, apenas o conteúdo dentro dela que deve ser extraido na raiz www. Então se localizar no servidor a sua index, também conseguirá localizar todas as pastas e subpastas que precisa.
Espero ter ajudado!
Abraços,
Cida Luna - São Carlos,SP.
tudo bem?
Quando disponibilizamos uma página web(site), o caminho padrão no servidor é o conteúdo inserido na pasta www ou public_html. Então, teoricamente tudo o que está contido em public_html, faz parte do site publicado.
Dentro dela você pode conferir seus arquivos, diretórios, scripts, entre outros.
Por exemplo:
arquivo: index.php
arquivo: empresax.php
arquivo: meuscript.php
diretorio: imagens
diretorio: notafiscal
Supondo que dentro do diretório notafiscal, temos o subdiretório: arquivos.
Dessa forma, para que o arquivo meuscript.php (que está na raiz) localize o subdiretório arquivos, eu tenho que informar o seguinte caminho:
$pasta = '/notafiscal/arquivos/';
No Xampp é comum criarmos a pasta com o nome do nosso projeto.
Pode ser que vc tenha ai, o caminho: C:\\xampp\\htdocs\\meuprojetox\\
Só que no servidor a pasta meuprojetox não será necessária, apenas o conteúdo dentro dela que deve ser extraido na raiz www. Então se localizar no servidor a sua index, também conseguirá localizar todas as pastas e subpastas que precisa.
Espero ter ajudado!
Abraços,
Cida Luna - São Carlos,SP.
GOSTEI 1
Mais Respostas
Leonardo Freitas
26/09/2017
Obrigado pela ajuda, não tem 10 minutos que consegui resolver.
Coloquei a culpa no caminho mas...
Depois de muita dor de cabeça percebi que no código o prefixo da chave "Nfe" tinha que ser com F maiúsculo. kkkkk
Quase perdi o juízo de raiva.
Mas é assim mesmo o código pega você no detalhe.
Me tire uma duvida fora desse contesto, tem alguma coisa que eu deva me preocupar nesse código com o quisto segurança?
A chave já tem validação, no formulário, só aceita números.
E como vem por post, não pode enviar na URL.
Mas a IDE me per tuba por um filtro em:
Como não sei muito de PHP não consegui aplicar o filter_imput().
Você poderia me dizer como ele ficaria aplicado?
Coloquei a culpa no caminho mas...
Depois de muita dor de cabeça percebi que no código o prefixo da chave "Nfe" tinha que ser com F maiúsculo. kkkkk
Quase perdi o juízo de raiva.
Mas é assim mesmo o código pega você no detalhe.
Me tire uma duvida fora desse contesto, tem alguma coisa que eu deva me preocupar nesse código com o quisto segurança?
A chave já tem validação, no formulário, só aceita números.
E como vem por post, não pode enviar na URL.
Mas a IDE me per tuba por um filtro em:
$xmlNfe = $pasta."Nfe".$_POST["arquivo"]."-nfe.xml"; $pdfNfe = $pasta."Nfe".$_POST["arquivo"]."-nfe.pdf";
Como não sei muito de PHP não consegui aplicar o filter_imput().
Você poderia me dizer como ele ficaria aplicado?
GOSTEI 0