tengo que añadir un código de imagen a mi sitio, pero por alguna razón me sale este error (desde el archivo de registro):PHP Captcha no puede encontrar el archivo 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
Aquí está mi código:
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;
y el archivo en mi carpeta:
-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
hice algo de investigación y lo que he encontrado es la fuente tiene que estar allí y como se puede ver que es en el sam e carpeta como el archivo PHP, ¿no estoy entendiendo algo?
No realiza ninguna comprobación de error. Todas esas funciones (como imagejpeg) devuelven booleanos u otra información que indica su éxito. Capture esos resultados y acéptese donde salió mal. – GolezTrol
Podría tener que ver con la biblioteca de GD que está utilizando. De los documentos de PHP, "Dependiendo de la versión de la biblioteca de GD que PHP esté usando, puede intentar buscar archivos que no comiencen con un '/' al agregar '.ttf' al nombre del archivo y buscar a lo largo de una biblioteca ruta de fuente definida ". Tal vez estaba buscando monofont.ttf.ttf? –