tôi cần phải thêm một mã xác nhận vào trang web của tôi, nhưng đối với một số lý do tôi nhận được lỗi này (từ tập tin log):PHP Captcha không thể tìm thấy file TTF
Warning: imagettfbbox(): Could not find/open font in /home/eric/www/captcha.php on line 24
Warning: imagettftext(): Could not find/open font in /home/eric/www/captcha.php on line 27
Dưới đây là mã của tôi:
function generate($width,$height,$characters='6') {
$code = '';
$availableChar = '23456789bcdfghjkmnpqrstvwxyz';
$i = 0;
while ($i < $characters) {
$code .= substr($availableChar, mt_rand(0, strlen($availableChar)-1), 1);
$i++;
}
$image = imagecreate($width, $height);
$text = imagecolorallocate($image, 20, 40, 100);
$things = imagecolorallocate($image, 100, 120, 180);
for($i=0; $i<($width*$height)/3; $i++) {
imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $things);
}
for($i=0; $i<($width*$height)/150; $i++) {
imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $things);
}
$textbox = imagettfbbox($height, 0, 'monofont.ttf', $code);
imagettftext($image, $height, 0, (($width - $textbox[4])/2), (($height - $textbox[5])/2), $text, 'monofont.ttf' , $code);
imagejpeg($image);
imagedestroy($image);
return $code;
}
header('Content-Type: image/jpeg');
$code = generate(100, 40, 5);
echo $_SESSION['security_code'] = $code;
và các tập tin trong thư mục của tôi:
-rwxr-xr-x 1 tech4wilco tech4wilco 41036 1999-07-13 23:30 monofont.ttf
-rw-r--r-- 1 tech4wilco tech4wilco 1030 2011-10-17 15:43 captcha.php
tôi đã làm một số đào và những gì tôi thấy là font cần phải có mặt ở đó và như bạn có thể nhìn thấy nó trong sam e thư mục như các tập tin PHP, Tôi không hiểu cái gì?
Bạn không thực hiện bất kỳ kiểm tra lỗi nào. Tất cả các hàm đó (như imagejpeg) trả về các boolean hoặc các thông tin khác cho biết thành công của chúng. Nắm bắt những kết quả đó và thu hẹp nơi nó đi sai. – GolezTrol
Có thể bạn phải thực hiện với thư viện GD bạn đang sử dụng. Từ các tài liệu PHP, "Tùy thuộc vào phiên bản của thư viện GD mà PHP đang sử dụng, nó có thể tìm kiếm các tệp không bắt đầu bằng '/' hàng đầu bằng cách thêm '.ttf' vào tên tệp và tìm kiếm dọc theo thư viện -đường dẫn phông chữ được xác định. " Có lẽ nó đang tìm kiếm monofont.ttf.ttf? –