Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa Tarde pessoal..
Fiz um código que gera uma imagem, para assinatura de e-mail, e salva na pasa, na mesma pasta do projeto para efeitos de teste..
o codigo que gera a imagem..
geraimg.php
<?php
# Captura nome e e-mail
$empresa = $_POST['empresa'];
$nome = $_POST['nome'];
$funcao =$_POST['funcao'];
$unidade = $_POST['unidade'];
if($_POST['contato'] != ''){
$contato = ' | '. $_POST['contato'];
$contato = str_replace("(", "", $contato);
$contato = str_replace(")", "", $contato);
$contato = str_replace("-", ".", $contato);
}
function RemoveAcentos($sub){
$acentos = array(
'À','Á','Ã','Â', 'à','á','ã','â',
'Ê', 'É',
'Í', 'í',
'Ó','Õ','Ô', 'ó', 'õ', 'ô',
'Ú','Ü',
'Ç', 'ç',
'é','ê',
'ú','ü',
);
$remove_acentos = array(
'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a',
'e', 'e',
'i', 'i',
'o', 'o','o', 'o', 'o','o',
'u', 'u',
'c', 'c',
'e', 'e',
'u', 'u',
);
return str_replace($acentos, $remove_acentos, urldecode($sub));
}
function assinaturaPromova($pessoa){
$empresa = $pessoa['empresa'];
$file = $pessoa['file'];
$nome = RemoveAcentos($pessoa['nome']);
$funcao = RemoveAcentos($pessoa['funcao']);
$telefone = $pessoa['telefone'];
$unidade = $pessoa['unidade'];
if(isset($pessoa['contato'])){
$contato = $pessoa['contato'];
}
$nomeesp = str_replace(" ", "-", $nome);
$nomeesp = RemoveAcentos($nomeesp);
$arquivo = 'Assinatura_' . strtolower($nomeesp) . '.png';
$path = 'assinaturas-Promova/'.$arquivo;
# Cabeçalho da Imagem
header('Content-Type: image/png');
# Cria uma imagem TRUE COLOR
# imagecreatetruecolor(width,height)
$im = imagecreatetruecolor(600,142);
imagealphablending($im, false);
imagesavealpha($im,true);
# Cria uma cor
# imagecolorallocate(imagem, R,G,B);
$branco = imagecolorallocatealpha($im, 255,255,255,10);
$cinzaEscuro = imagecolorallocate($im, 120,121,123);
$cinzaClaro = imagecolorallocate($im, 93,93,93);
$preto = imagecolorallocate($im, 0,0,0);
# Preenche o plano de fundo
imagefill($im, 0, 0, $branco);
# Proporção do redimensionamento
$i = 1;
# Captura a largura e altura da imagem
list($width,$height) = getimagesize($file);
# Importa a imagem a ser redimensionada
$im_raw = imagecreatefrompng($file);
# Copia uma imagem para dentro da outra
imagecopyresampled(
$im, # Imagem do destino
$im_raw, # Imagem da origem
0, # Coordenada X do destino
0, # Coordenada Y do destino
0, # Coordenada X da origem
0, # Coordenada Y da origem
$width*$i, # Largura no destino
$height*$i, # Altura no destino
$width, # Largura na origem
$height); # Altura na origem
$positionArray = imagettfbbox(12.5, 0, 'fonts/MyriadPro-Semibold.otf' , $nome);
$posicao = 244 + $positionArray[4];
# Insere um texto com fonte TTF / OTF
# imagettftext(imagem,tamanho,angulo,x,y,cor,fonte,string)
imagettftext($im,12.5,0,243.1,75,$cinzaEscuro,'fonts/MyriadPro-Semibold.otf',$nome);
imagettftext($im,12.5,0,$posicao,75,$cinzaClaro,'fonts/MyriadPro-Regular.otf',' | '.$funcao.' | '.$unidade);
imagettftext($im,12,0,243.1,92,$cinzaClaro,'fonts/MyriadPro-Regular.otf', $telefone . $contato);
imagettftext($im,12,0,243.1,110,$cinzaClaro,'fonts/MyriadPro-Regular.otf','www.promovaideias.com.br');
imagepng($im, $path);
}
switch ($empresa) {
case 'promova':
switch ($unidade) {
case 'PR':
$telefone = "41 3333.7030";
break;
case 'DF':
$telefone = "61 3383.6030";
break;
case 'SP':
$telefone = "41 3333.7030";
break;
case 'RS':
$telefone = "51 3024.1520";
break;
case 'GO':
$telefone = "62 3275.6778";
break;
case 'RJ':
$telefone = "21 2205.7881";
break;
}
# Arquivo da imagem
$file = 'img/promova.png';
if(isset($contato)){
$pessoa = ['nome' => $nome, 'funcao' => $funcao, 'telefone' => $telefone, 'contato' => $contato, 'file' => $file, 'unidade' => $unidade, 'empresa' => $empresa];
}else{
$pessoa = ['nome' => $nome, 'funcao' => $funcao, 'telefone' => $telefone, 'file' => $file, 'unidade' => $unidade, 'empresa' => $empresa];
}
assinaturaPromova($pessoa);
break;
case 'artcort':
# Arquivo da imagem
$file = 'img/artcort2.png';
if(isset($contato)){
$pessoa = ['nome' => $nome, 'funcao' => $funcao, 'telefone' => '41.3083.1053', 'contato' => $contato, 'file' => $file, 'empresa' => $empresa];
}else{
$pessoa = ['nome' => $nome, 'funcao' => $funcao, 'telefone' => '41.3083.1053', 'file' => $file, 'empresa' => $empresa];
}
assinaturaArtcort($pessoa);
break;
default:
# Arquivo da imagem
$file = 'img/promova.png';
break;
}
Em localhost, ele gera a imagem, certinha, e salva na pasta especificada em $path. (assinaturas-Promova/Assinatura_nome-da-pessoa.png).
Só que quando o código esta no servidor, ele nao gera a imagem, ou se gera, ele nao esta salvando.. No servidor nao acusa nenhum erro.
ja setei chmod da pasta para 0777 e tbm nada..
Qualque ajuda é bem-vinda.. :D
Abraços...
Linha do header comentada..
e erros habilitados..
ini_set('display_errors',1);
ini_set('display_startup_erros',1);
error_reporting(E_ALL);
e mesmo assim a tela fica em branco.. como se nada tivesse acontecido..
rodando esse mesmo código em localhost, ele gera a imagem, do jeito certo..
só no servidor que não..
Vlw.
Veja o código-fonte gerado. Verifique se está, de fato, em branco.
Também analise o cabeçalho HTTP de resposta. Se não for 200, houve alguma falha. Analise logs do servidor também
O código fonte da página em branco...
<html>
<head>
<meta name="chromesniffer" id="chromesniffer_meta" content="{"SPDY":-1}">
<script type="text/javascript" src="chrome-extension://homgcnaoacgigpkkljjjekpignblkeae/detector.js">
</script>
</head>
<body cz-shortcut-listen="true">
</body>
</html>
e.. o culpado, eu acho..
HTTP header..
status code: 525 :/
O que seria esse erro?
eu pesquisei mas nao achei nada que ajudasse... :(
esse 525 não pode ser o http status code...
nem o RFC do HTTP tem esse código documentado: https://tools.ietf.org/html/rfc7231
esse chromesniffer está estranho. É uma extensão que você usa? Tente desabilitá-la pra testar (ou use uma aba anônima. Acho que ela roda sem as extensões)
Na aba anonima o erro muda.. de 525 pra 500..
o 525 muito estranho, um print da tela na aba normal
/applications/core/interface/imageproxy/imageproxy.php?img=http://i58.tinypic.com/20hlzrs.png&key=08501a3178cc3caca17b2d73bc2b1274f209057bf67808f18c70cfc0030d29fa" alt="20hlzrs.png" />
Esse detector.js e o chromesniffer de fato são por causa da extensao que uso. (appspector)..
e um print da tela na aba privada
/applications/core/interface/imageproxy/imageproxy.php?img=http://i59.tinypic.com/adchn4.png&key=86408be0d511740afa090ba00802766af049a480580600589f60adb3bdfa01a4" alt="adchn4.png" />
Agra, ja verifiquei as permissoes de pastas do projeto, ja tentei (7777, 0777, 2777, 0644), e todas que me indicam..
e mesmo assim continua com esse erro 500. como se nao existisse o arquivo, ou alguma coisa que ele esteja tentando puxar...
as imgs tbm coloquei com permissoes..
já nao sei mais o que mudar.. :/
erro 500 é o código genérico para erros no servidor. Se os erros não estão sendo exibidos na tela, eles devem estar no arquivo de logs. Veja os logs para entender o motivo do erro
Aee.. Resolvido..
vi no log do servidor, tava dando erro no array..
ele tava assim, sempre usei nesse formato e dava certo:
$pessoa = ['nome' => $nome, 'funcao' => $funcao, 'telefone' => '41.3083.1053', 'contato' => $contato, 'file' => $file, 'empresa' => $empresa];
dai troquei para:
$pessoa = array('nome' => $nome, 'funcao' => $funcao, 'telefone' => '41.3083.1053', 'contato' => $contato, 'file' => $file, 'empresa' => $empresa);
e deu certo, gerou a assinatura
Vlw Beraldo pela sua ajuda..
Abraços..
a sintaxe de arrays com colchetes só está disponível a partir do PHP 5.4. Provavelmente seu servidor está com uma versão amis antiga do PHP
Habilite todas as exibições de erro como mostrado neste tópico. Também comente a linha do header(), assim qualquer mensagem de erro será exibida na tela
Execute novamente e veja qual é o resultado