2011-10-17 6 views
8

Je dois ajouter un captcha sur mon site, mais pour une raison que j'obtenir cette erreur (à partir du fichier journal):Captcha PHP ne peut pas trouver le fichier 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 

Voici mon code:

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; 

et le fichier dans mon dossier:

-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 

Je l'ai fait quelques recherches et ce que je trouve est la police a besoin d'être là et comme vous pouvez le voir est dans le sam e dossier que le fichier PHP, je ne comprends pas quelque chose?

+0

Vous ne faites aucune vérification d'erreur. Toutes ces fonctions (comme imagejpeg) renvoient des booléens ou d'autres informations qui indiquent leur succès. Attraper ces résultats et affiner là où il s'est mal passé. – GolezTrol

+0

Cela peut être lié à la bibliothèque GD que vous utilisez. Dans les docs PHP, "Selon la version de la bibliothèque GD que PHP utilise, il peut tenter de rechercher des fichiers qui ne commencent pas par un '/' en ajoutant" .ttf "au nom de fichier et en recherchant dans une bibliothèque chemin de police défini. " Peut-être cherchait-il monofont.ttf.ttf? –

Répondre

16

Il cherche probablement dans le mauvais répertoire. Essayez de remplacer monofont.ttf par ./monofont.ttf.

+0

omg cela a fonctionné, je ne comprends pas pourquoi merci – Tech4Wilco

1

Ce n'est pas dans le même dossier que le fichier PHP, puisque vous exécutez Test.php et non Captcha.php. Essayez de le placer dans le même dossier que test.php ou utilisez le bon chemin pour y accéder. Le fichier

+0

désolé mon mauvais, j'ai renommé le fichier par la suite. – Tech4Wilco

0

monofont.ttf ne figure pas dans le répertoire.

+0

Ceci ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire en dessous de son message - vous pouvez toujours commenter vos propres messages, et une fois que vous aurez suffisamment de [réputation] (http://stackoverflow.com/faq#reputation) vous pourrez à [commenter n'importe quel message] (http://stackoverflow.com/privileges/comment). –

+0

cette réponse est pour la question ci-dessus – saravanabawa

Questions connexes