Avatar billede acmed Nybegynder
06. januar 2004 - 16:25 Der er 37 kommentarer og
1 løsning

GD library problem

Jeg har lavet et script der uploader et submitted billede og derefter laver en mindre thumbnail af dette billede også.
Dertil bruger jeg kommandoen "imagecreatefromJPEG".

Mit problem er at scriptet virker aldeles fint på én linux server, men nu har jeg så brug for at bruge det på en anden server.
Der "hænger" scriptet bare - det uploader fint det oprindelige billede, men efter et stykke tid timer det ud og gemmer blot en 0kb fil som thumbnail.

Jeg troede jo så, at der måske var problemer med at GD library ikke var installeret på serveren, men såvidt jeg kan se er det der (jeg er ikke nogen linux haj).

Nogen forslag til hvordan jeg kommer videre?


Scriptet - men det er nok ikke scriptet det er galt med:

$end =  (substr($img1_name, -3));
$end = strtolower($end);
// generate unique id for use in filename
$uniq = uniqid("");
// new file name
$filename = $uniq.'.'.$end;
$filename_s = $uniq.'_s.'.$end;
copy("$img1", "$globalvar_path/billeder/$maindir/$subdir/$filename")
                or die("Billedet blev ikke uploadet - Prøv igen !");
$imginfo = getimagesize($globalvar_homepage.'billeder/'.$maindir.'/'.$subdir.'/'.$filename);
$height = $imginfo[1];
$width = $imginfo[0];
$size = $img1_size;

// Lav thumbnail af billede
  $compression="50";
      $src_img = imagecreatefromJPEG("$globalvar_path/billeder/$maindir/$subdir/$filename");
  $new_w = '120';
  $new_h = ($height*($new_w/$width));
  $dst_img = imagecreate($new_w,$new_h);
  imagecopyresized($dst_img, $src_img, 0, 0, 0, 0, $new_w, $new_h, $width, $height);
  imagejpeg($dst_img, "$globalvar_path/billeder/$maindir/$subdir/$filename_s", $compression);
Avatar billede acmed Nybegynder
06. januar 2004 - 16:27 #1
Glemte lige:
Jeg prøvede at installere GD library rpm, og fik følgende: pakke gd-1.8.4-11 (som er nyere end gd-1.8.4-9) er allerede installeret
        pakke gd-2.0.15-1 (som er nyere end gd-1.8.4-9) er allerede installeret
        filen /usr/lib/libgd.so.1.8.4 fra installationen af gd-1.8.4-9 skaber konflikt
med fil fra pakken gd-1.8.4-11


Det er derfor jeg tror at det er installeret i forvejen.
Avatar billede detox Nybegynder
06. januar 2004 - 16:33 #2
Du kan tjekke det med:

<?php
echo "<pre>";
print_r(gd_info());
echo "</pre>";
?>
Avatar billede detox Nybegynder
06. januar 2004 - 16:39 #3
Men mangler der ikke noget af scriptet, for jeg kan ikke lige se hvor du får de forskellige variabler fra?
Avatar billede acmed Nybegynder
06. januar 2004 - 18:55 #4
Jo, der mangler noget af scriptet - men hvis jeg skulle skrive det hele, ville det vist fylde for meget ;-) - og igen, scriptet virker fint på en anden maskine.

Når jeg prøver med dit forslag ovenfor skriver den:

Fatal error:  Call to undefined function:  gd_info() in test.php on line 3

Så måske er GD lib ikke installeret - jeg forstår det bare ikke helt...
Avatar billede detox Nybegynder
06. januar 2004 - 19:02 #5
Ok, PHP 4 >= 4.3.0. Så måske du bare har en lidt ældre version. Det kan osse tjekkes med:

<?PHP
phpinfo();
?>

Hvor der er et afsnit om GD.
Avatar billede detox Nybegynder
06. januar 2004 - 19:03 #6
Men der kan måske osse være tale om at register_globals = On på den ene server og Off på den anden.
Avatar billede acmed Nybegynder
06. januar 2004 - 19:05 #7
Den skriver:

gd
GD Support enabled
GD Version 1.6.2 or higher
FreeType Support enabled
FreeType Linkage with freetype
JPG Support enabled
PNG Support enabled
WBMP Support enabled
Avatar billede detox Nybegynder
06. januar 2004 - 19:05 #8
Det kan du tjekke med:

<?
echo ini_get('register_globals');
?>

0 = Off
1 = On
Avatar billede detox Nybegynder
06. januar 2004 - 19:07 #9
Hmm, version 1.6.2 er en ældre version. Er det din egen server?
Avatar billede acmed Nybegynder
06. januar 2004 - 19:09 #10
Ikke helt - men jeg har fuld(root) adgang til den.
Men jeg havde nogle problemer når jeg prøvede at installere en ny rpm som nævnt ovenfor - men måske det skal gøres anderledes hvis den skal updates?

Register_globals er on.
Avatar billede acmed Nybegynder
06. januar 2004 - 19:10 #11
den skriver jo også bare GD Version 1.6.2 or higher
Avatar billede detox Nybegynder
06. januar 2004 - 19:12 #12
Jo, men så er den nok heller ikke meget nyere ;o)
Min skriver: GD Version  bundled (2.0.15 compatible)
Avatar billede detox Nybegynder
06. januar 2004 - 19:25 #13
Har du mulighed for at rette i php.ini?
Avatar billede detox Nybegynder
06. januar 2004 - 19:39 #14
Er denne sti rigtig:
$imginfo = getimagesize($globalvar_homepage.'billeder/'.$maindir.'/'.$subdir.'/'.$filename);
alle andre steder bruger du:
"$globalvar_path/billeder/$maindir/$subdir/$filename"
Avatar billede acmed Nybegynder
06. januar 2004 - 22:16 #15
Ja, jeg kan godt rette i php.ini.

Ja, stien er korrekt. Det er fordi at "$globalvar_path/billeder/$maindir/$subdir/$filename" bruges når jeg skal kopiere filer til serveren - dvs. det er en direkte serversti.

$globalvar_homepage.'billeder/'.$maindir.'/'.$subdir.'/'.$filename referer til www.abcdefg.dk/qwerty/xyz.jpg.
Det er nu engang sådan at imginfo vil have stien...
Avatar billede acmed Nybegynder
08. januar 2004 - 21:45 #16
Kiggede på den server hvor scriptet virker fint. Der er der et bibliotek der hedder gd-2.0.11

På den anden server hvor det ikke virker er der et bibliotek der hedder
gd-2.0.17 (altså en nyere version!)
Avatar billede detox Nybegynder
08. januar 2004 - 22:19 #17
Kan du tjekke om du har denne linie i din php.ini:
extension=php_gd2.dll
Avatar billede acmed Nybegynder
08. januar 2004 - 22:23 #18
Det havde jeg ikke - har prøvet at tilføje den nu. Ser hvad der sker...
Avatar billede detox Nybegynder
08. januar 2004 - 22:31 #19
Husk at genstarte apache ;o)
Avatar billede acmed Nybegynder
08. januar 2004 - 22:33 #20
Har genstartet. Ser ikke ud til at gøre en forskel. Linien er nu heller ikke i min php.ini på den server hvor scriptet virker...
Avatar billede detox Nybegynder
08. januar 2004 - 22:34 #21
Er det Linux?
Avatar billede acmed Nybegynder
08. januar 2004 - 22:36 #22
Jeps
Avatar billede detox Nybegynder
08. januar 2004 - 22:38 #23
Har du et link til: phpinfo();
så jeg kan kigge lidt på den?
Avatar billede acmed Nybegynder
08. januar 2004 - 22:39 #24
Avatar billede detox Nybegynder
08. januar 2004 - 22:49 #25
Er din extension path rigtig, har du dine extensions liggende i: /usr/lib/php4?
Avatar billede detox Nybegynder
08. januar 2004 - 22:52 #26
Ellers skriv din fulde sti, i php.ini, i linien:
extension_dir = "Fuld/sti/til/extension"
Avatar billede acmed Nybegynder
08. januar 2004 - 22:57 #27
Stien er rigtig nok.
Der ligger kun 3 .so filer i /usr/lib/php4...
Avatar billede detox Nybegynder
08. januar 2004 - 23:00 #28
Hmm, jeg er faktisk ikke så meget inde i Linux. Din php.ini ser jo ud til at være ok, så måske det er et helt andet sted vi skal lede. Jeg finder det bare mærkeligt at du ikke kan bruge en enkel funktion som gd_info()?
Jeg havde slået ud af hovedet af det var Linux, så glem det med:
extension=php_gd2.dll
eftersom du jo bruger .so filer.
Avatar billede detox Nybegynder
08. januar 2004 - 23:04 #29
Aha, gd_info() virker åbenbart først fra ver. 4.3
Avatar billede acmed Nybegynder
08. januar 2004 - 23:05 #30
Testede lige. Den giver den samme fejlmeddelelse på den anden server også
(Fatal error: Call to undefined function: gd_info())

Så det behøver åbenbart ikke at virke...
Avatar billede detox Nybegynder
08. januar 2004 - 23:14 #31
Jeg fandt noget om en patch til php version 4.2.3, mon ikke den gælder for 4.2.2 osse?
Kunne være det der drillede, du kan prøve at se på det.
http://www.boutell.com/gd/phppatch.html
Avatar billede acmed Nybegynder
08. januar 2004 - 23:19 #32
Ok. Fandt problemet nu...
Jeg prøvede at udelade nogle af linierne i scriptet. Det er slet ikke imagecreatefromJPEG der er problemer med.
Hvis jeg udelader...

$imginfo = getimagesize($globalvar_homepage.'billeder/'.$maindir.'/'.$subdir.'/'.$filename);
$height = $imginfo[1];
$width = $imginfo[0];
$size = $img1_size;

...virker scriptet.

Men så kan jeg så ikke få højde/bredde på billedet.
Nogen ide om hvorfor "getimagesize" ikke virker på server nummer2?
Avatar billede detox Nybegynder
08. januar 2004 - 23:23 #33
Prøv at bruge imagesx() og imagesy() istedet.
Avatar billede detox Nybegynder
08. januar 2004 - 23:25 #34
Må være stien der driller.
Avatar billede detox Nybegynder
08. januar 2004 - 23:25 #35
Forstod heller ikke du skulle bruge en anden sti til netop den funktion.
Avatar billede acmed Nybegynder
08. januar 2004 - 23:26 #36
Tjah, det virkede som sagt på server1. Men jeg prøver lige at rode med det...
Avatar billede acmed Nybegynder
08. januar 2004 - 23:31 #37
Det var sgu´ stien. Bare mærkeligt at det virkede på den første server.
Nå, men du skal have MANGE tak fordi du gad hjælpe mig igennem...

Læg et svar, så får du pointene...
Avatar billede detox Nybegynder
08. januar 2004 - 23:37 #38
Jeps, velbekommen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester