2011-10-17 31 views
8

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ì?

+0

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

+0

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? –

Trả lời

16

Có thể nó đang tìm trong thư mục sai. Hãy thử thay đổi monofont.ttf thành ./monofont.ttf.

+0

omg nó làm việc, tôi không hiểu tại sao tho cảm ơn – Tech4Wilco

1

Không nằm trong cùng thư mục với tệp PHP, vì bạn đang chạy Test.php chứ không phải Captcha.php. Hãy thử đặt nó trên cùng thư mục với test.php hoặc sử dụng đường dẫn chính xác để truy cập vào nó.

+0

xin lỗi xấu của tôi, tôi đổi tên tập tin sau đó. – Tech4Wilco

0

monofont.ttf tệp không có trong thư mục.

+0

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, hãy để lại nhận xét bên dưới bài đăng của họ - bạn luôn có thể nhận xét về bài đăng của riêng bạn và sau khi bạn có đủ [danh tiếng] (http://stackoverflow.com/faq#reputation), bạn sẽ có thể để [bình luận về bất kỳ bài viết] (http://stackoverflow.com/privileges/comment). –

+0

câu trả lời này là cho câu hỏi trên – saravanabawa

Các vấn đề liên quan