content-length
não pode ser definido se Transfer-Encoding
estiver definido como chunked
. No momento de enviar os cabeçalhos, o servidor não sabe quantos dados ele finalmente enviará. Cada bloco tem seu próprio campo de cabeçalho de tamanho (consulte a RFC ).
Se você pensar sobre isso, ao contrário de um arquivo HTML estático, o servidor da Web não tem como saber quantos dados serão gerados por um script PHP. Ele pode armazenar em cache o arquivo gerado e enviá-lo após o script ser concluído ou ser enviado em partes enquanto é gerado. O último é preferido especialmente para scripts com saída grande e um longo tempo de execução.