Почему не генерируется изображение php ? И не работает капча почему?

НАШЕЛ РЕШЕНИЕ! НАДО БЫЛО УКАЗАТЬ ПОЛНЫЙ ПУТЬ К ШРИФТУ " $capfont = 'C:\OSPanel\domains\Betcms\captcha\Highspeed_2.ttf';"

Не могу найти причину по которой не генерируется изображение, из-за этого не работает капча

//captcha.php
<?php

$capletters = 'ABCDEFGKIJKLMNOPQRSTUVWXYZ123456789'; 

$captlen = 5; 

$capwidth = 210; $capheight = 64; 

$capfont = 'Highspeed_2.ttf'; 

$capfontsize = 23;

header('Content-type: image/png'); 

$capim = imagecreatetruecolor($capwidth, $capheight); 

imagesavealpha($capim, true); 

$capbg = imagecolorallocatealpha($capim, 0, 0, 0, 127);

imagefill($capim, 0, 0, $capbg); 

$capcha = '';

for ($i = 0; $i < $captlen; $i++){

$capcha .= $capletters[rand(0, strlen($capletters)-1) ]; 

$x = ($capwidth - 20) / $captlen * $i + 10;

$x = rand($x, $x+5); 

$y = $capheight - ( ($capheight - $capfontsize) / 2 ); 

$capcolor = imagecolorallocate($capim, rand(0, 100), rand(0, 100), rand(0, 100) ); 

$capangle = rand(-35, 35); 

imagettftext($capim, $capfontsize, $capangle, $x, $y, $capcolor, $capfont, $capcha[$i]);

} 
session_start();

$_SESSION['captcha'] = strtolower($capcha);

imagepng($capim);

imagedestroy($capim);

?>

//index.php
<? if (!isset($_POST['captcha'])) { ?>
<div class="r1_golov">Регистрация</div>
<div class="r1">

<form action="" method="post">

Логин:<br />
<input type="text" name="login" value="<? echo $log = (isset($_SESSION['login'])) ? $_SESSION['login'] : ''; ?>" required><br />

E-mail:<br />
<input type="email" name="email" value="<? echo $em = (isset($_SESSION['email'])) ? $_SESSION['email'] : ''; ?>"  required><br />

Пароль:<br />
<input type="password" name="pas1"  required><br />

Пароль еще раз:<br />
<input type="password" name="pas2"  required><br />


<img src="../captcha/captcha.php" width="170px" height="50px"><br />
Символы с картинки:<br />
<input type="text" name="captcha"  required><br>

<input type="submit" name="regOn" value="Регистрация">

</form>
<? } ?>
</div>

//control.php
<?php
if (isset($_POST['captcha'])) {
    $errorCaptcha = false;
    
    #принимаем и обрабатываем каптчу
    $captcha = trim(strtolower($_POST['captcha']));
      
    #если каптча введена неверно, добавляем ошибку
        if ($captcha != $_SESSION['captcha']) $errorCaptcha = true;
    
    #если каптча введена верно   
    if  (!$errorCaptcha) {
        
        #очищаем данные
        foreach($_POST as $key=>$value){
            $_POST[$key] = XSS($value);
        }

        
        #проверяем и записываем данные
        $login = (is_string($_POST['login'])) ? $_POST['login'] : false;
        $pas1 = (!empty($_POST['pas1'])) ? $_POST['pas1'] : false;
        $pas2 = (!empty($_POST['pas2'])) ? $_POST['pas2'] : false;
        $email = (preg_match("|^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $_POST['email'])) ? $_POST['email'] : false;
        
        #проверяем все ли данные введены корректно
        if ($login && $pas1 && $pas2 && $email) {
            
            #если пароли совпадают
            if ($pas1 == $pas2) {
            
            #обнуляем ошибки
            $error = false;
                       
            #проверяем не зарегистрирован ли пользователь с таким логином
            $query = $db -> query("SELECT * FROM users WHERE login = ?s ", $login);
            $loginInBase = $db -> numRows($query);
            
            #если пользователь с таким логином есть, выводим ошибку
            if ($loginInBase)  {
                                   errors('Пользователь с таким логином уже зарегистрирован!');
                                   $error = true;
                                }
            
            #проверяем не зарегистрирован ли пользователь с таким email
            if (!CheckEmail($email)) {
                                        errors('Пользователь с таким Email уже зарегистрирован!');
                                        $error = true;
                                     }
            
            #если не возникло никаких ошибок
            if (!$error) {
                
            #запоминаем пароль
            $password = md5(sha1(md5($pas1)));
            
            #проверяем наличие бонуса при регистрации
            $bonus_reg = ($settingsSystem['bonus_reg']) ? $settingsSystem['bonus_reg'] : 0;
            
            #добавляем пользователя в БД
            $query = $db -> query("INSERT INTO users (login, password, email, balance) VALUES (?s, ?s, ?s, ?i)", $login, $password, $email, $bonus_reg);
            
            #если пользователь добавлен в базу
            if ($query) {
                        show('Успешная регистрация! Теперь вы можете авторизоваться в системе.');
                        $_SESSION['login'] = '';
                        $_SESSION['email'] = '';
                        }
                else    
                        {
                        #если не удалось записать пользователя в БД, выдаем ошибку
                        errors('Ошибка записи пользователя в БД.');
                        }
                        
            #если возникали ошибка, выводи соответствующее сообщение           
            } else errors('Ошибка регистрации. Повторите снова.');
            
            
            #если пароли не совпали, выдаем ошибку            
            } else errors('Пароли не совпадают!');
        
        #если какие-либо данные не заполнены, или введены не корректно, выдаем ошибку    
        } else errors('Заполните корректно все поля!');
        
        
              
    } else  {
            #выводим сообщение о том, что каптча введена неверно
            echo errors('Каптча введена неверно!');
            
            #запомним данные, которые вводил пользователь
            $_SESSION['login'] = XSS($_POST['login']);
            $_SESSION['email'] = XSS($_POST['email']);
            
            }
}```

Ответы (1 шт):

Автор решения: Jean-Claude

Для того чтобы увидеть ошибки, отключи заголовок

header('Content-type: image/png');

Следует указывать полный путь к шрифту

D:\server\localhost\test\www\georgia.ttf

Получить его можно так:

//windows
$font = dirname(__FILE__) . '\arial.ttf';
//unix
$font = dirname(__FILE__) . '/arial.ttf';
→ Ссылка