Решение
1. Откройте библиотеку gd2 и просмотрите ее через phpinfo. Очистите спецификацию. Код пишется начиная с верхней строки, поэтому проблема может возникнуть в коде.
2. Добавьте оператор ob_clean() перед заголовком и запустите его.
Примечание
При создании изображений заголовок('Content-type: image/png'); Или добавьте: ob_clean(); Даже если вы используете вывод, вы можете использовать это предложение для очистки кэша вывода.
Решите примеры
//Установим высоту и ширину проверочного кодаколичество символов выше $img_w = 70; $img_h = 22; $шрифт = 5; $char_len = 5; //Объединение массивов, функция range() возвращает массив диапазонов $char = array_merge (диапазон ('a', 'z'), диапазон ('A', 'Z'), диапазон ('1', '9')); $rand_keys = array_rand ( $char, $char_len ); // Случайным образом берем указанное количество элементов из массива для генерации значений ключей; if ($char_len == 1) { //Если число только одно, array_rand() возвращает тип, отличный от массива $rand_keys = массив ($rand_keys); } shuffle($rand_keys); //Не нужно использовать $код = ''; foreach ($rand_keys как $k) { $code .= $char [$k]; } сеанс_старт (); $_SESSION ['капча'] = $код; //Добавляем линию и цвет //Создаем новое изображение $img = imagecreatetruecolor ($img_w, $img_h); //назначаем цвет $bg_color = imagecolorallocate ($img, 0xcc, 0xcc, 0xcc); //Цвет фона холста imagefill ($img, 0, 0, $bg_color); //линия помех for($i = 0; $i < 300; ++$i) { $color = imagecolorallocate ($img, mt_rand (0, 255), mt_rand (0, 255), mt_rand (0, 255)); imagesetpixel ($img, mt_rand (0, $img_w), mt_rand (0, $img_h), $color); } for($i = 0; $i <= 10; ++ $i) { //Установим цвет линии $color = imageColorAllocate ($img, mt_rand (0, 255), mt_rand (0, 255), mt_rand (0, 255)); //Рисуем случайную прямую линию на изображении $img imageline ($img, mt_rand (0, $img_w), mt_rand (0, $img_h), mt_rand (0, $img_w), mt_rand (0, $img_h), $color); //imagesetpixel($img,mt_rand(0,$img_w),mt_rand(0,$img_h),$color); } //Добавляем кадр $rect_color = imagecolorallocate ($img, 0x90, 0x90, 0x90); imagerectangle ($img, 0, 0, $img_w - 1, $img_h - 1, $rect_color); $str_color = imagecolorallocate ($img, mt_rand (0, 100), mt_rand (0, 100), mt_rand (0, 100)); $font_w = ширина изображения ($font); $font_h = imagefontheight ($font); $str_len = $font_w * $char_len; imagestring ($img, $font, ($img_w - $str_len)/2, ($img_h - $font_h)/2, $code, $str_color );
Вышеуказанное является решением проблемы, связанной с тем, что php не может генерировать изображения. Надеюсь, это будет полезно всем.