Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
toda vez que tenho que definir um header na minha página ocorre o seguinte erro: **Warning: Cannot modify header information - headers already sent by (output started at <caminho do arquivo onde é definido o topo da pagina>: <numero da linha>) in <caminho do arquivo atual> on line *<numero da linha>***
Eu já tentei fazer isso para gerar um pdf com o TCPDF e também para forçar um download.
Alguém pode dar uma dica de como posso fazer isso?
valeu
>
Os headers devem ser escritos SOMENTE antes de qualquer informação ser enviada ao navegador, ou seja, nas primeiras linhas do código.
Uma pequena gambiarra a se fazer em alguns casos é inserir as seguintes linhas em seu script:
ob_start(); //PRIMEIRA LINHA DO CÓDIGO
...
ob_end_flush(); //ÚLTIMA LINHA DO CÓDIGO
[]'s
Matheus,
as mensagens de erro de header realmente nao aparecem mais, até ai tudo bem, mas na hora de gerar o pdf por exemple (classe TCPDF)
aparece a seguinte mensagem:
TCPDF ERROR: Some data has already been output, can't send PDF file
Então verifiquei que nessa classe ele entra na seguinte condição:
if (ob_get_contents()) {
$this->Error('Some data has already been output, can\'t send PDF file');
}
li um pouco sobre a funcao ob_get_contents() e ela é responsável por guardar o conteudo do buffer.
Mesmo colocando as funcoes que você comentou:
ob_start(); //PRIMEIRA LINHA DO CÓDIGO
e
ob_end_flush(); //ÚLTIMA LINHA DO CÓDIGO
ainda tem informacao no buffer, alguem sabe o que tenho q fazer?
obrigado
Amigo nobre9910 já tive estes problemas com chamada de página via ajax
para gerar pdf.
Eu optei por abrir o arquivo em um popup javascript.
Resolveu meus problemas sem mais delongas
Abraços.
Os headers devem ser escritos SOMENTE antes de qualquer informação ser enviada ao navegador, ou seja, nas primeiras linhas do código.
Uma pequena gambiarra a se fazer em alguns casos é inserir as seguintes linhas em seu script:
ob_start(); //PRIMEIRA LINHA DO CÓDIGO
...
ob_end_flush(); //ÚLTIMA LINHA DO CÓDIGO
[]'s