2011-10-17 24 views
8

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?

+0

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

+0

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

Respuesta

16

Probablemente esté buscando en el directorio incorrecto. Intente cambiar monofont.ttf a ./monofont.ttf.

+0

omg funcionó, no entiendo por qué gracias – Tech4Wilco

1

No está en la misma carpeta que el archivo PHP, ya que está ejecutando Test.php y no Captcha.php. Intenta ponerlo en la misma carpeta que test.php o usa la ruta correcta para acceder a él.

+0

lo siento mal, renombré el archivo después. – Tech4Wilco

0

monofont.ttf archivo no está allí en el directorio.

+0

Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones, y una vez que tenga suficiente [reputación] (http://stackoverflow.com/faq#reputation) podrá para [comentar cualquier publicación] (http://stackoverflow.com/privileges/comment). –

+0

esta respuesta es para la pregunta anterior – saravanabawa

Cuestiones relacionadas