Windows+IIS+PHP验证码不显示,Apache+IIS+PHP下是OK的,如何解决。是PHP的配置问题吗?还是程序问题?
<?php   
@header("Content-Type:image/png");   
session_start();   
$_SESSION['authnum'] = '';   
  
$str = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";    
$list = explode(",", $str);   
for($i=0; $i<4; $i++){   
    $randnum = rand(0, 60);   
    $authnum .= $list[$randnum];   
}   
$_SESSION['authnum'] = strtolower($authnum);   
  
$im = @imagecreate(40, 20) or die("Cant's initialize new GD image stream!");   
$text_color = imagecolorallocate($im, 255, 255, 255); //文本顔色   
$background_color01 = imagecolorallocate($im, 255, 0, 0); //背景色1   
$background_color02 = imagecolorallocatealpha($im, 255, 255, 255, 127); //背景色2   
$noise_color = imagecolorallocate($im, 200, 200, 200); //干扰顔色   
imagefill($im, 0, 0, $background_color02); //区域填充   
  
imagestring($im, 5, 2, 2, $authnum, $text_color);   
/*for($i=0; $i<400; $i++){ //加入干扰象素   
    imagesetpixel($im, rand()%90 , rand()%30 , $noise_color);  
}*/  
imagepng($im);   
imagedestroy($im);   
?>  
//asker:www.yuanshi88.com

解决方案 »

  1.   

    有没有GD库
    还有  Apache+IIS+PHP这是神马组合?
      

  2.   

    这种情况虽然不是那么常出现,但是出现在机率还是很高的。一般而言,网页验证码不出现显示叉叉有以下几种可能:
    1、网速慢造成的验证码加载失败;
    2、本地缓存文件文件夹已满,请清除缓存文件及临时文件;
    3、不同的浏览器的不兼容现象造成验证码无法显示;
    4、运行  regsvr32 c:\windows\system32\pngfilt.dll  命令,重新注册pngfilt.dll组件;
    5、如果以上几种都不是问题,那就有可能是目标服务器设置问题(没有安装相应的图片处理组件,或服务器MITE类型问题)
      

  3.   

    Apache环境下正常在IIS上却不正常。不知道你的APACHE+PHP+MYSQL环境是不是用集成安装包安装的。你很可能还是没有开启GD库。看看你的电脑到底有几个php.ini 是否都开启了gd库
      

  4.   

    $text_color = imagecolorallocate($im, 255, 255, 255); //文本顔色   
    $background_color02 = imagecolorallocatealpha($im, 255, 255, 255, 127); //背景色2   
    $noise_color = imagecolorallocate($im, 200, 200, 200); //干扰顔色   全白???
    就你的代码而言,在任何服务器配置下,图片都是看不见的。