Forçar download de arquivo com PHP, fornecendo arquivo vazio
O objetivo final é que o usuário baixe um arquivo .csv. No momento, estou apenas testando a tentativa de baixar um arquivo de texto simples: test.txt. A única coisa neste arquivo é a palavra "teste".
Aqui está o código HTML para files_to_download.php
Test file: <a href='test.php?file=test.txt'>Test.txt</a>
Código para test.php:
if(!(empty($_GET["file"])))
{
$file_name = $_GET["file"];
$path = "path/to/file";
$fullPath = $path . $file_name;
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: inline; attachment; filename=\"$file_name\"");
header("Content-Type: text/plain");
header("Content-Transfer-Encoding: binary");
readfile($fullPath);
}
Eu tentei variações dos cabeçalhos acima, adicionando mais e removendo outros. O acima exposto parece ser o mais comum recomendado neste site.
Eu também tentei mudar
header("Content-Type: text/plain");
para
header("Content-Type: text/csv");
e obtenha os mesmos resultados: arquivo .txt ou .csv vazio.
Os arquivos não estão vazios quando os abro diretamente (navegador de arquivos) do servidor. Eu verifiquei as permissões dos arquivos e ambos são 644, para que o mundo inteiro possa pelo menos ler os arquivos. O diretório é 777.
Existe uma configuração no servidor Apache que preciso especificar que pode não estar ou estou faltando algo acima.
Obrigado por olhar!