Ir para conteúdo
Fórum Script Brasil
  • 0

[RESOLVIDO]Sem acesso ao php.ini, ajudem solução no erro Warning: Cann


Ethan_Kurtis

Pergunta

Olá pessoal, é o meu primeiro tópico e estou um pouco desesperado, então por favor desculpem se o tópico estiver na área errada. Estou com esse problema no meu site: Warning: Cannot modify header information - headers already sent by (output started at ...), já procurei várias soluções, como verificar o espaçamento antes do código <?php e usar o ob_start() antes do mesmo, mas nada funcionou. Não tenho acesso ao php.ini para alterar o output_buffering, que muitos dizem ser a solução. Se houver outra, que possa ser feita no próprio script, por favor me ajudem.

Eis meu código:

<?php ob_start();
$codigo = $_REQUEST["codigo"];
$tipoRoupa = $_REQUEST["tipoRoupa"];
$conn = mysqli_connect("localhost", "usuario", "senha","bancodados");
$sql = "";
if($tipoRoupa==1){
    $sql = "SELECT extnFoto,foto FROM camisetes WHERE cod=".$codigo.";";
}
else if($tipoRoupa==2){
    $sql = "SELECT extnFoto,foto FROM conjuntos WHERE cod=".$codigo.";";
}
else if($tipoRoupa==3){
    $sql = "SELECT extnFoto,foto FROM saias WHERE cod=".$codigo.";";
}
else{
    $sql = "SELECT extnFoto,foto FROM vestidos WHERE cod=".$codigo.";";
}
    $query = mysqli_query($conn,$sql);
    $row = mysqli_fetch_array($query,MYSQLI_ASSOC); 
    $tipo = $row["extnFoto"];
    $bytes = $row["foto"]; 
    header("Content-type: image/".$tipo,true);
    print $bytes;
?>

Desde já grato, galera!

Abraços.

Editado por Ethan_Kurtis
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Vlw pela adica amigo, mas o problema persiste. Eu adicionei esse método depois do ob_start() e não funcionou, useu

ini_set('output_buffering', '4096');
e
ini_set('output_buffering', 4096);

e o erro persiste. Sou iniciante em php e não entendo muito ainda, mas poderia ter alguma relação com os parâmetros capturados no início do script?

Link para o comentário
Compartilhar em outros sites

  • 0

Tenho amigo, não é gerado nenhum. Como você viu, eu apenas recebo parâmetros de outra página, faço uma busca sql para retornar uma imagem de um campo blob e apenas lá embaixo eu altero o header informando que contem uma imagem, depois eu dou um echo para printar a imagem.

O problema é que uso um servidor de hospedagem e não tenho acesso ao php.ini para alterar o output_buffering, que muitos dizem ser a solução.

Editado por Ethan_Kurtis
Link para o comentário
Compartilhar em outros sites

  • 0
Tenho amigo, não é gerado nenhum. Como você viu, eu apenas recebo parâmetros de outra página, faço uma busca sql para retornar uma imagem de um campo blob e apenas lá embaixo eu altero o header informando que contem uma imagem, depois eu dou um echo para printar a imagem.

O problema é que uso um servidor de hospedagem e não tenho acesso ao php.ini para alterar o output_buffering, que muitos dizem ser a solução.

Olá!

Amigo, isso significa que algum header já foi criado/enviado(output started at...), ou seja, retire este header que você colocou.Os headers nem sempre precisam ser criados.E no seu caso já foi criado(pelo próprio servidor acredito), então pode retirar que não vai mudar nada.

Mas se caso realmente precise, teste colocando seu header no topo da página, embaixo de <?php, e ve se da certo.Qualquer outro erro, postai.

Flws!

Link para o comentário
Compartilhar em outros sites

  • 0

Então, mas eu precisaria primeiro fazer uma consulta SQL para retonar uma imagem (podendo ser jpg, gif, png etc), e só então criar header("content-type:image/".$tipoimagem);

Testei o header logo após o <?php e ocasionou o mesmo erro.

Retirando o header não ocasiona erro algum, mas eu precisaria primeiro resolver esse problema porque a imagem não aparece usando <img src="exibeFoto.php"/>

Editado por Ethan_Kurtis
Link para o comentário
Compartilhar em outros sites

  • 0

Olá amigão!

Não precisa de header para exibir imagens não.Para mostrar uma imagem, use um código html simples.

Exemplo:

Caso o endereço da foto la na tabela estiver completo (ex: http://site.com.br/imagem1.jpg), só você fazer assim:

<?php ob_start();
$codigo = $_REQUEST["codigo"];
$tipoRoupa = $_REQUEST["tipoRoupa"];
$conn = mysqli_connect("localhost", "usuario", "senha","bancodados");
$sql = "";
if($tipoRoupa==1){
    $sql = "SELECT extnFoto,foto FROM camisetes WHERE cod=".$codigo.";";
}
else if($tipoRoupa==2){
    $sql = "SELECT extnFoto,foto FROM conjuntos WHERE cod=".$codigo.";";
}
else if($tipoRoupa==3){
    $sql = "SELECT extnFoto,foto FROM saias WHERE cod=".$codigo.";";
}
else{
    $sql = "SELECT extnFoto,foto FROM vestidos WHERE cod=".$codigo.";";
}
    $query = mysqli_query($conn,$sql);
    $row = mysqli_fetch_array($query,MYSQLI_ASSOC); 
    $tipo = $row["extnFoto"];
    $bytes = $row["foto"]; 
    echo "<img src=$bytes>";
?>

Flws!

Link para o comentário
Compartilhar em outros sites

  • 0

Primeiramente cara, tenho que agradecer por tentar me ajudar tanto, isso é raro, sou muito grato!

Então, mas o que eu tenho dentro do banco não é o endereço da imagem, mas a própria imagem em si em um campo BLOB. O código que postei seria para capturar os bytes da imagem, printá-los no arquivo, alterar o cabeçalho para informar que o documento possui uma imagem e finalmente, em outro arquivo, chamar a página como se ela fosse uma imagem. Exe: <img src="exibeFoto.php?codigo=1&tipoRoupa=4"/>

Mas para isso eu precisaria alterar o cabeçalho do documento, como muitos sites de tutoriais explicam.

Link para o comentário
Compartilhar em outros sites

  • 0
Primeiramente cara, tenho que agradecer por tentar me ajudar tanto, isso é raro, sou muito grato!

Então, mas o que eu tenho dentro do banco não é o endereço da imagem, mas a própria imagem em si em um campo BLOB. O código que postei seria para capturar os bytes da imagem, printá-los no arquivo, alterar o cabeçalho para informar que o documento possui uma imagem e finalmente, em outro arquivo, chamar a página como se ela fosse uma imagem. Exe: <img src="exibeFoto.php?codigo=1&tipoRoupa=4"/>

Mas para isso eu precisaria alterar o cabeçalho do documento, como muitos sites de tutoriais explicam.

Olá!

Denada amigão :) !

Amigão, eu acho que seria mais facil, você fazer upload das fotos para uma pasta no servidor, e salvar o endereço completo no banco de dados, e depois exibir usando o while.Caso isso te ajude a resolver, posso postar um exemplo de upload que salva o endereço no banco de dados.

Flws!

Editado por lucke
Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal, problema resolvido. Eu não sei ao certo como resolvi o problema, mas ai estão os passos que segui

Eu copiava os arquivos para a pasta 'www', e quando dava o erro, dizia que o cabeçalho já estava definido - ele passava o caminho, e a pasta final era a 'public_html'. Eu deletei meu arquivo das pastas 'www' e 'public_html', copiei novamente para as duas e funcionou.

Eis o código final:

<? ob_start();
ini_set('output_buffering', '4096');
$codigo = $_REQUEST["codigo"];
$tipoRoupa = $_REQUEST["tipoRoupa"];
$conn = mysqli_connect("localhost", "user", "senha","bancodados");
$sql = "";
if($tipoRoupa==1){
    $sql = "SELECT extnFoto,foto FROM camisetes WHERE cod=".$codigo.";";
}
else if($tipoRoupa==2){
    $sql = "SELECT extnFoto,foto FROM conjuntos WHERE cod=".$codigo.";";
}
else if($tipoRoupa==3){
    $sql = "SELECT extnFoto,foto FROM saias WHERE cod=".$codigo.";";
}
else{
    $sql = "SELECT extnFoto,foto FROM vestidos WHERE cod=".$codigo.";";
}
    $query = mysqli_query($conn,$sql);
    $row = mysqli_fetch_array($query,MYSQLI_ASSOC); 
    $tipo = $row["extnFoto"];
    $bytes = $row["foto"];
    header("content-type:image/".$tipo);
    echo $bytes;
    ob_end_flush();
?>

Agradeço à todos que me ajudaram, em especial o lucke por ser tão camarada.

Abraço à todos!

Editado por Ethan_Kurtis
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...