我刚刚将一个站点移动到运行PHP 7的新服务器上。我相信它最初是在PHP 5.4上。以下URL应显示包含代码的图像,如验证码:
http://appreviewhelper.com/static/captcha/GkK9yEiaw6
点击该URL后,将运行以下代码:
$code=rand(1000,9999);
$code = (string)$code;
$_SESSION["code"]=$code;
$im = imagecreate(50, 24);
$bg = imagecolorallocate($im, 238, 238, 238); //background color blue
$fg = imagecolorallocate($im, 85, 85, 85);//text color white
imagefill($im, 0, 0, $bg);
imagestring($im, 5, 5, 5, $code, $fg);
header("Cache-Control: no-cache, must-revalidate");
header('Content-type: image/png');
header("Content-Disposition: inline; filename=captcha.png");
imagepng($im);
imagedestroy($im);
exit();
它在旧服务器上工作正常。我已经确保安装了PHP GD库并且模块已经启用,并且我已经一遍又一遍地验证了......但是,我仍然得到一个小的空白图像。有什么想法吗?
由于
编辑:以下是从该网站的gd_info()输出:
array(12) {
["GD Version"]=>
string(5) "2.1.1"
["FreeType Support"]=>
bool(true)
["FreeType Linkage"]=>
string(13) "with freetype"
["GIF Read Support"]=>
bool(true)
["GIF Create Support"]=>
bool(true)
["JPEG Support"]=>
bool(true)
["PNG Support"]=>
bool(true)
["WBMP Support"]=>
bool(true)
["XPM Support"]=>
bool(true)
["XBM Support"]=>
bool(true)
["WebP Support"]=>
bool(true)
["JIS-mapped Japanese Font Support"]=>
bool(false)
}
答案 0 :(得分:0)
我自己回答是因为,经过数小时和数小时后,我发现了问题所在。客户端使用Dropbox与我共享文件。显然,Dropbox将文件转换为Unicode。因此,具有图像生成代码的文件在输出图像之前发送BOM,导致图像看起来已损坏。将文件的编码更改为UTF-8修复了问题...
感谢观看和回复的人的时间。