Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Skrypt generujący kod kreskowy
Forum PHP.pl > Forum > Przedszkole
dsinfo
Zwracam się do Państwa z następującym pytaniem. Otóż mam skrypt przedstawiony na listingu nr. 1 (znaleziony na tym forum).
I jak go uruchamiam to w oknie przeglądarki widnieje napis - " Fatal error: Call to undefined function ImageCreate() in C:\usr\www\s\u\b.php on line 81 ". Owa linia nr. 81 została oznaczona komentarzem w listingu nr. 1.

Według mnie jest to problem z biblioteką GD. Ja już próbowałem uruchamiać różne skrypty napisane w języku PHP, które miały za zadanie generować kody kreskowe i zawsze występował jakiś błąd. Chyba nawet ten sam*?.

Mój serwer to Apache 2.0.55.0, interpreter PHP w wersji 5.1.4 .

Jak mam usunąć ten problem? Proszę o pomoc w jego rozwiązaniu!


  1. <?php
  2.  
  3. class Code
  4. {
  5.   public function __construct ($code)
  6.   {
  7.       $lw = 2;
  8.       $hi = 100;
  9.      
  10.       $Lencode = array
  11.       (
  12.           '0001101',
  13.           '0011001',
  14.           '0010011',
  15.           '0111101',
  16.           '0100011',
  17.           '0110001',
  18.           '0101111',
  19.           '0111011',
  20.           '0110111',
  21.           '0001011'
  22.       );
  23.                  
  24.       $Rencode = array
  25.       (
  26.           '1110010',
  27.           '1100110',
  28.           '1101100',
  29.           '1000010',
  30.           '1011100',
  31.           '1001110',
  32.           '1010000',
  33.           '1000100',
  34.           '1001000',
  35.           '1110100'
  36.       );
  37.      
  38.       $ends   = '101';
  39.       $center = '01010';
  40.  
  41.         if (strlen ($code) != 11)
  42.       {
  43.           die ('Blad podczas tworzenia kodu kreskowego.');
  44.       }
  45.  
  46.       $ncode = '0' . $code;
  47.       $even  = 0;
  48.       $odd   = 0;
  49.      
  50.       for ($x = 0; $x < 12; $x++)
  51.       {
  52.           if ($x % 2)
  53.           {
  54.               $odd += $ncode[$x];
  55.           }
  56.           else
  57.           {
  58.               $even += $ncode[$x];
  59.           }
  60.       }
  61.        
  62.       $code .= (10 - (($odd * 3 + $even) % 10)) % 10;
  63.  
  64.       $bars  = $ends;
  65.         $bars .= $Lencode[$code[0]];
  66.      
  67.       for ($x = 1; $x < 6; $x++)
  68.       {
  69.           $bars .= $Lencode[$code[$x]];
  70.       }
  71.      
  72.       $bars .= $center;
  73.  
  74.       for ($x = 6; $x < 12; $x++)
  75.       {
  76.           $bars .= $Rencode[$code[$x]];
  77.       }
  78.      
  79.       $bars .= $ends;
  80.  
  81.       $img = ImageCreate        ($lw * 95 + 30, 50);                // linia 81
  82.       $fg    = ImageColorAllocate ($img, 0, 0, 0);
  83.               $bg   = ImageColorAllocate ($img, 255, 255, 255);
  84.  
  85.         ImageFilledRectangle ($img, 0, 0, $lw * 95 + 30, $hi + 30, $bg);
  86.      
  87.       $shift = 10;
  88.  
  89.       for ($x = 0; $x < strlen ($bars); $x++)
  90.       {
  91.           if (($x < 10) || ($x >= 45 && $x < 50) || ($x >= 85))
  92.           {
  93.               $sh = 10;
  94.           }
  95.           else
  96.           {
  97.               $sh = 0;
  98.           }
  99.      
  100.           if ($bars[$x] == '1')
  101.           {
  102.               $color = $fg;
  103.           }
  104.           else
  105.           {
  106.               $color = $bg;
  107.           }
  108.          
  109.           ImageFilledRectangle ($img, ($x * $lw) + 15, 5, ($x + 1) * $lw + 14, $hi + 5 + $sh, $color);
  110.       }
  111.  
  112.       ImageString ($img, 4, 5, $hi - 5, $code[0], $fg);
  113.      
  114.       for ($x = 0; $x < 5; $x++)
  115.       {
  116.           ImageString ($img, 5, $lw * (13 + $x * 6) + 15, $hi + 5, $code[$x+1], $fg);
  117.           ImageString ($img, 5, $lw * (53 + $x * 6) + 15, $hi + 5, $code[$x+6], $fg);
  118.       }
  119.      
  120.       ImageString ($img, 4, $lw * 95 + 17, $hi - 5, $code[11], $fg);
  121.  
  122.       //header ("Content-Type: image/png");
  123.        
  124.       ImagePNG ($img, 'code.png');
  125.   }
  126. }
  127.  
  128. ?>
  129.  
  130. <?php
  131.  
  132. $CreateCode = new Code (12345678901);
  133.  
  134. ?>
l0ud
Skrypt działa prawidłowo, ale nie masz dołączonego rozszerzenia GD do PHP. Upewnij się, że w pliku php.ini nie jest ono zakomentowane:
Kod
;extension=php_gd2.dll

z takiej lub podobnej linii, trzeba usunąć średnik na początku. Plik php.ini znajduje się najczęściej w folderze z php, albo w katalogu windowsa.

Jeszcze prostszą metodą jest zainstalowanie serwera XAMPP i korzystanie z niego (posiada już wszystko, co potrzebne),.
dsinfo
Po dodaniu na samym początku owej linijki interpreter nadal zwraca problem. Tym razem o treści - "
Parse error: parse error, unexpected '=' in C:\usr\www\s\u\b.php on line 2 ".

Natomiast odnośnie pliku php.ini , nie mogę go znaleść. Wpisałem w wyszukiwarkę plików frazę "php.ini" i jedyne co otrzymałem to
plik o nazwie - " php.ini-dist " oraz plik " php.ini-recommended ". A przeszukałem wszystkie dyski.
dsinfo
Po dodaniu na samym początku owej linijki interpreter nadal zwraca problem. Tym razem o treści - "
Parse error: parse error, unexpected '=' in C:\usr\www\s\u\b.php on line 2 ".

Natomiast odnośnie pliku php.ini , nie mogę go znaleść. Wpisałem w wyszukiwarkę plików frazę "php.ini" i jedyne co otrzymałem to
plik o nazwie - " php.ini-dist " oraz plik " php.ini-recommended ". A przeszukałem wszystkie dyski.

W pliku php.ini-dist znajduje się zapis umieszczony powyżej.
l0ud
Powyższa linia nie odnosiła się do skryptu, a pliku php.ini

Spróbuj zamienić nazwę pliku php.ini-recommended na php.ini . W otrzymanym pliku wprowadź modyfikację polegającą na usunięciu średnika i zrestartuj serwer.
dsinfo
Nic. Próbowałem i z jednym plikiem i z drugim. Cały czas ten sam błąd w lini 81.
Lejto
odpal phpinfo i zobacz czy masz pełną specyfikacje gd
l0ud
Polecam po prostu odinstalować wszystko to co masz, i zainstalować XAMPP - zbiór wszystkiego co potrzebne. Unikniesz problemów z konfiguracją.
dsinfo
Nic takiego nie widziałem!
Lejto
czego nie widziałeś? specyfikacji gd w phpinfo to nie masz zainstalowanego gd w php.ini pomieszaj a jak ci się nie chce to jak już wspomniał @l0ud zainstaluj pakiet serwerowy np. XAMPP
dsinfo
W pliku php.ini (utworzonym przezemnie, gdyż go nie było nigdzie) był i jest nadal wpis " ;extension=php_gd2.dll ".
Lejto
to z wpisu ;extension=php_gd2.dll usuń z początku ; żeby było extension=php_gd2.dll
php.ini masz w c:\windows?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.