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!

questionAnswers(3)

yourAnswerToTheQuestion