Heim >Backend-Entwicklung >PHP-Tutorial >ubuntu 的PHP服务器,验证码图片不显示字符,怎么回事

ubuntu 的PHP服务器,验证码图片不显示字符,怎么回事

WBOY
WBOYOriginal
2016-06-23 14:22:55898Durchsuche

ubuntu 的PHP服务器,验证码图片不显示字符,怎么回事?
有图片生成,就是没有字符显示.是字符集错误了吗?哪里设置?


回复讨论(解决方案)

代码贴出来看一下

把直接打开生成的图片看一下,看看是否正常!

代码贴出来看一下

<?phpfunction getAuthImage($text) {	$im_x = 160;	$im_y = 40;	$im = imagecreatetruecolor($im_x,$im_y);	$text_c = ImageColorAllocate($im, mt_rand(0,100),mt_rand(0,100),mt_rand(0,100));	$tmpC0=mt_rand(100,255);	$tmpC1=mt_rand(100,255);	$tmpC2=mt_rand(100,255);	$buttum_c = ImageColorAllocate($im,$tmpC0,$tmpC1,$tmpC2);	imagefill($im, 16, 13, $buttum_c);	$font = 't1.ttf';	for ($i=0;$i<strlen($text);$i++)	{		$tmp =substr($text,$i,1);		$array = array(-1,1);		$p = array_rand($array);		$an = $array[$p]*mt_rand(1,10);//角度		$size = 28;		imagettftext($im, $size, $an, 15+$i*$size, 35, $text_c, $font, $tmp);	}	$distortion_im = imagecreatetruecolor ($im_x, $im_y);	imagefill($distortion_im, 16, 13, $buttum_c);	for ( $i=0; $i<$im_x; $i++) {		for ( $j=0; $j<$im_y; $j++) {			$rgb = imagecolorat($im, $i , $j);			if( (int)($i+20+sin($j/$im_y*2*M_PI)*10) <= imagesx($distortion_im)&& (int)($i+20+sin($j/$im_y*2*M_PI)*10) >=0 ) {				imagesetpixel ($distortion_im, (int)($i+10+sin($j/$im_y*2*M_PI-M_PI*0.1)*4) , $j , $rgb);			}		}	}	//加入干扰象素;	$count = 160;//干扰像素的数量	for($i=0; $i<$count; $i++){		$randcolor = ImageColorallocate($distortion_im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));		imagesetpixel($distortion_im, mt_rand()%$im_x , mt_rand()%$im_y , $randcolor);	}	$rand = mt_rand(5,30);	$rand1 = mt_rand(15,25);	$rand2 = mt_rand(5,10);	for ($yy=$rand; $yy<=+$rand+2; $yy++){		for ($px=-80;$px<=80;$px=$px+0.1)		{			$x=$px/$rand1;			if ($x!=0)			{				$y=sin($x);			}			$py=$y*$rand2;			imagesetpixel($distortion_im, $px+80, $py+$yy, $text_c);		}	}	//设置文件头;	Header("Content-type: image/JPEG");	//以PNG格式将图像输出到浏览器或文件;	ImagePNG($distortion_im);	//销毁一图像,释放与image关联的内存;	ImageDestroy($distortion_im);	ImageDestroy($im);}function make_rand($length="32"){//验证码文字生成函数	$str="ABCDEFGHIJKLMNOPQRSTUVWXYZ";	$result="";	for($i=0;$i<$length;$i++){		$num[$i]=rand(0,25);		$result.=$str[$num[$i]];	}	return $result;}//输出调用$checkcode = make_rand(4);session_start();//将随机数存入session中$_SESSION['helloweba_gg']=strtolower($checkcode);getAuthImage($checkcode);?>



windows的服务器可以. 就是ubuntu 不行

把直接打开生成的图片看一下,看看是否正常!


windows的服务器可以. 就是ubuntu 不行


代码贴出来看一下

<?phpfunction getAuthImage($text) {	$im_x = 160;	$im_y = 40;	$im = imagecreatetruecolor($im_x,$im_y);	$text_c = ImageColorAllocate($im, mt_rand(0,100),mt_rand(0,100),mt_rand(0,100));	$tmpC0=mt_rand(100,255);	$tmpC1=mt_rand(100,255);	$tmpC2=mt_rand(100,255);	$buttum_c = ImageColorAllocate($im,$tmpC0,$tmpC1,$tmpC2);	imagefill($im, 16, 13, $buttum_c);	$font = 't1.ttf';	for ($i=0;$i<strlen($text);$i++)	{		$tmp =substr($text,$i,1);		$array = array(-1,1);		$p = array_rand($array);		$an = $array[$p]*mt_rand(1,10);//角度		$size = 28;		imagettftext($im, $size, $an, 15+$i*$size, 35, $text_c, $font, $tmp);	}	$distortion_im = imagecreatetruecolor ($im_x, $im_y);	imagefill($distortion_im, 16, 13, $buttum_c);	for ( $i=0; $i<$im_x; $i++) {		for ( $j=0; $j<$im_y; $j++) {			$rgb = imagecolorat($im, $i , $j);			if( (int)($i+20+sin($j/$im_y*2*M_PI)*10) <= imagesx($distortion_im)&& (int)($i+20+sin($j/$im_y*2*M_PI)*10) >=0 ) {				imagesetpixel ($distortion_im, (int)($i+10+sin($j/$im_y*2*M_PI-M_PI*0.1)*4) , $j , $rgb);			}		}	}	//加入干扰象素;	$count = 160;//干扰像素的数量	for($i=0; $i<$count; $i++){		$randcolor = ImageColorallocate($distortion_im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));		imagesetpixel($distortion_im, mt_rand()%$im_x , mt_rand()%$im_y , $randcolor);	}	$rand = mt_rand(5,30);	$rand1 = mt_rand(15,25);	$rand2 = mt_rand(5,10);	for ($yy=$rand; $yy<=+$rand+2; $yy++){		for ($px=-80;$px<=80;$px=$px+0.1)		{			$x=$px/$rand1;			if ($x!=0)			{				$y=sin($x);			}			$py=$y*$rand2;			imagesetpixel($distortion_im, $px+80, $py+$yy, $text_c);		}	}	//设置文件头;	Header("Content-type: image/JPEG");	//以PNG格式将图像输出到浏览器或文件;	ImagePNG($distortion_im);	//销毁一图像,释放与image关联的内存;	ImageDestroy($distortion_im);	ImageDestroy($im);}function make_rand($length="32"){//验证码文字生成函数	$str="ABCDEFGHIJKLMNOPQRSTUVWXYZ";	$result="";	for($i=0;$i<$length;$i++){		$num[$i]=rand(0,25);		$result.=$str[$num[$i]];	}	return $result;}//输出调用$checkcode = make_rand(4);session_start();//将随机数存入session中$_SESSION['helloweba_gg']=strtolower($checkcode);getAuthImage($checkcode);?>





windows的服务器可以. 就是ubuntu 不行

检查你的字体文件路径.

你把 62 行的 Header("Content-type: image/JPEG"); 注释掉就能看到错误信息了
ttf 是 windows 的字体文件,你需要安装支持库

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:重定向问题Nächster Artikel:一个关于mysql_fetch_array的问题