Непонятная ошибка в class

82
19 марта 2021, 20:40

Есть код под хамп работает а под Ubuntu нет, ремируешь QRcode::png класс всё норм, но естественно картинок не создаёт, в чём может быть отличия. Разрешения в Ubuntu на папки поставил xampp 7.1.15 ubuntu 7.1.26-1 в нём класс ханадрит Ссылка на код где class лежит https://pastebin.com/MwG5znG9

echo "<h1>PHP QR Code</h1><hr/>";
    //set it to writable location, a place for temp generated PNG files
    $PNG_TEMP_DIR = dirname(__FILE__).DIRECTORY_SEPARATOR.'temp'.DIRECTORY_SEPARATOR;
    //html PNG location prefix
    $PNG_WEB_DIR = 'temp/';
    include "qrlib.php";    
    //ofcourse we need rights to create temp dir
    if (!file_exists($PNG_TEMP_DIR))
        mkdir($PNG_TEMP_DIR);

    $filename = $PNG_TEMP_DIR.'test.png';
    //processing form input
    //remember to sanitize user input in real-life solution !!!
    $errorCorrectionLevel = 'L';
    if (isset($_REQUEST['level']) && in_array($_REQUEST['level'], array('L','M','Q','H')))
        $errorCorrectionLevel = $_REQUEST['level'];    
    $matrixPointSize = 4;
    if (isset($_REQUEST['size']))
        $matrixPointSize = min(max((int)$_REQUEST['size'], 1), 10);

    if (isset($_REQUEST['data'])) { 
        //it's very important!
        if (trim($_REQUEST['data']) == '')
            die('data cannot be empty! <a href="?">back</a>');
        // user data
        $filename = $PNG_TEMP_DIR.'test'.md5($_REQUEST['data'].'|'.$errorCorrectionLevel.'|'.$matrixPointSize).'.png';
        QRcode::png($_REQUEST['data'], $filename, $errorCorrectionLevel, $matrixPointSize, 2);    
    } else {    
        //default data
        echo 'You can provide data in GET parameter: <a href="?data=like_that">like that</a><hr/>';    
        QRcode::png('PHP QR Code :)', $filename, $errorCorrectionLevel, $matrixPointSize, 2);    
    }    
    //display generated file
    echo '<img src="'.$PNG_WEB_DIR.basename($filename).'" /><hr/>';

На то что ругается в логах дальше

    class QRimage {
    //----------------------------------------------------------------------
    public static function png($frame, $filename = false, $pixelPerPoint = 4, $outerFrame = 4,$saveandprint=FALSE) 
    {
        $image = self::image($frame, $pixelPerPoint, $outerFrame);
        if ($filename === false) {
            Header("Content-type: image/png");
            ImagePng($image);
        } else {
            if($saveandprint===TRUE){
                ImagePng($image, $filename);
                header("Content-type: image/png");
                ImagePng($image);
            }else{
                ImagePng($image, $filename);
            }
        }
        ImageDestroy($image);
    }
    //----------------------------------------------------------------------
    public static function jpg($frame, $filename = false, $pixelPerPoint = 8, $outerFrame = 4, $q = 85) 
    {
        $image = self::image($frame, $pixelPerPoint, $outerFrame);
        if ($filename === false) {
            Header("Content-type: image/jpeg");
            ImageJpeg($image, null, $q);
        } else {
            ImageJpeg($image, $filename, $q);            
        }
        ImageDestroy($image);
    }
    //----------------------------------------------------------------------
    private static function image($frame, $pixelPerPoint = 4, $outerFrame = 4) 
    {
        $h = count($frame);
        $w = strlen($frame[0]);
        $imgW = $w + 2*$outerFrame;
        $imgH = $h + 2*$outerFrame;
        $base_image =ImageCreate($imgW, $imgH);
        $col[0] = ImageColorAllocate($base_image,255,255,255);
        $col[1] = ImageColorAllocate($base_image,0,0,0);
        imagefill($base_image, 0, 0, $col[0]);
        for($y=0; $y<$h; $y++) {
            for($x=0; $x<$w; $x++) {
                if ($frame[$y][$x] == '1') {
                    ImageSetPixel($base_image,$x+$outerFrame,$y+$outerFrame,$col[1]); 
                }
            }
        }
        $target_image =ImageCreate($imgW * $pixelPerPoint, $imgH * $pixelPerPoint);
        ImageCopyResized($target_image, $base_image, 0, 0, 0, 0, $imgW * $pixelPerPoint, $imgH * $pixelPerPoint, $imgW, $imgH);
        ImageDestroy($base_image);
        return $target_image;
    }
}
?>

авкп

[Fri Jul 05 13:04:46.832565 2019] [php7:error] [pid 18833] [client 10.59.3.1:1683] PHP Fatal error:  Uncaught Error: Call to undefined function ImageCreate() in /*/*/*/qrimage.php:75\nStack trace:\n#0 /*/*/*/qrimage.php(33): QRimage::image(Array, 4, 2)\n#1 /*/*/*/qrencode.php(494): QRimage::png(Array, '/*/*/*/t...', 4, 2, false)\n#2 /*/*/*/qrencode.php(286): QRencode->encodePNG('PHP QR Code :)', '/*/*/*/t...', false)\n#3 /*/*/*/index.php(71): QRcode::png('PHP QR Code :)', '/*/*/*/t...', 'L', 4, 2)\n#4 {main}\n  thrown in /*/*/*/qrimage.php on line 75
Answer 1

Если скрипт использует графические методы, нужно убедится в подключении графической библиотечки.
Ссылка на stackoverflow(Eng) с этой же проблемой

READ ALSO
Как сортировать сообщения в диалоги на PHP?

Как сортировать сообщения в диалоги на PHP?

Есть сообщения из БД, как сделать что-то типо диалоговЧтобы показывалось только последнее сообщение (проверка по логину)

86
Как составить SQL запрос вывода диалогов?

Как составить SQL запрос вывода диалогов?

Ранее задавал вопрос как сортировать данные полученные из базы средствами PHP, посоветовали что лучше составить запрос на SQL

113
Белый экран на странице phpinfo(). Битрикс

Белый экран на странице phpinfo(). Битрикс

В админке Битрикса при переходе Настройки-Инструменты-Диагностика-Настройки PHP (/bitrix/admin/phpinfophp) выдаёт пустую страницу

109
Нужна помощь по работе с массивами

Нужна помощь по работе с массивами

Всем приветЯ новичок в PHP

100