Суть проблемы в том, что есть небольшая самописная CMS и все было бы здорово, если не одно но!
Как показало время, на всех VDS серверах CMS работает нормально, НО модуль PHP_GD, который работает с изображениями никак не хочет выводить корректную картинку той же самой сгенерированной капчи (При этом, на некоторых VDS серверах все работает просто отлично).
После всяческих манипуляций я понял, что php_gd установлен и работает, но корректно не выводит картинку в браузер и браузер отображает, что картинка повреждена и открыть невозможно. После я сохранил две картинки, одну где капча отображается корректно, а другую, где косячит. Я как тру программист открыл эти две картинки jpeg в notepad++ и увидел то, что картинка, которая не отображается, в ней есть две новой строки, после которой уже идет "Код" самой картинки. Я удалил эти две новые строки и о чудо, картинка отобразилась на моем пк.
НО, дело то совсем не в этом! Почему на одном сервере картинка с капчей отображается отлично, а на другом сервере вот такой косяк!?
Читал кучу форумов, все файлы php у меня в utf-8 БЕЗ БОМ. Пробелов и лишних символов в коде не обнаружил.
Прошу помощи у опытных людей! Проблема довольно старая...
Сам код капчи:
$font = ENGINE_DIR . 'fonts/' . $this->font;
$img = imagecreatetruecolor($this->width, $this->height);
$width = imagesx($img);
$height = imagesy($img);
$white = imagecolorallocate($img, 255, 255, 255);
$grey = imagecolorallocate($img, 128, 128, 128);
$white = imagecolorallocate($img, 255, 255, 255);
$grey = imagecolorallocate($img, 128, 128, 128);
imagefill($img, 0, 0, $white);
for($i = 0; $i < 3; $i++) {
imageline($img, rand(1, $width/2), rand(1, $height), rand($width/2, $width), rand(1, $height), $grey);
}
imagettftext($img, 16, 0, 10, 18, $grey, $font, $this->code);
header('Content-type: image/jpeg');
imagejpeg($img);
imagedestroy($img);