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