Gå til innhold

GD, freetype library og php


Anbefalte innlegg

Jeg har tatt utgangspunkt i en captcha som en her på forum har laget (https://www.diskusjon.no/index.php?showtopic=583400 ), redesignet det til å bruke klasser og testet. Funker fint på min winxp sp2 med gd 2.0.28 og freetype 2.1.9. I skriptet brukes funksjonen imagettftext, hvor et av parameterene skal være en font-fil (av typen .tff). I skriptet jeg tok utgangspunkt i refereres det til "./Arial.tff", jeg kan også endre den til eks verdana eller en annen true type.

 

 

Så kommer problemet mitt.

Jeg ska laste dette over på en produksjonsserver, som kjører linux red hat, og nå virker ikke skriptet mitt mer. Jeg får feilmelding om at fontfilen ikke kan åpnes.

 

Jeg har googlet meg frem til at jeg kan sette GDFONTLIBRARY til current directory, men uten hell.

 

Noen ideer om hvordan jeg kan løse dette?

 

For de som er glad i å lese kode:

http://nibbler.no/files/capcha/

Lenke til kommentar
Videoannonse
Annonse

what he said^^

 

dirname(__FILE__) er min favoritt :D

 

Lurer forresten hvilken PHP-versjon du koder mot?

Utifra stilen vil jeg anta PHP4?

Sist men ikke minst så burde du oppgi størrelsen på bildet som Content-Length, ikke bare Content-Type.

Lenke til kommentar
er du sikker på at filen er der? For at ifølge koden skal den være i samme mappe, ikke sant? Og jeg får bare opp 404 når jeg prøver: http://nibbler.no/files/capcha/WorstveldSlingExtra.tff

 

og for enkelhetenskyld, sett $gdpath til dirname($_SERVER["SCRIPT_FILENAME"])

6216908[/snapback]

 

Hmm, en liten skrivefeil, nå rettet opp i. og $gdpath har jeg endret til det du sa....

 

Still nothing.

Jeg tenkte kanskje det var fordi jeg hadde en "rar font" jeg ville vise, så jeg overførte arial istedet, men med samme resultat.

 

Jeg tror det har noe med hvor skriptet skal lete etter .tff-filer, og putenv-funksjonen.

Men jeg er tom for ideer om hva jeg kan google på.

Alle steder jeg har letet bruker de putenv("GDFONTPATH=".<sti>) og filnavn uten ttf, men hos meg funker det ikke.

Lenke til kommentar
what he said^^

 

dirname(__FILE__) er min favoritt :D

 

Lurer forresten hvilken PHP-versjon du koder mot?

Utifra stilen vil jeg anta PHP4?

Sist men ikke minst så burde du oppgi størrelsen på bildet som Content-Length, ikke bare Content-Type.

6217270[/snapback]

 

versjon 4.3.1.0

Lenke til kommentar

tror jeg fant feilen:

       for($i=0;$i<5;$i++) { 
          $nm = rand(0, 50); 
          $col = imagecolorallocate($image, $nm, $nm, $nm); 
          $str = $code[$i]; 
          $font = 1;

du setter jo $font til 1 etter at du har satt til arial.tff. Kan det være grunnen?

Lenke til kommentar

Merk dette:

Depending on which version of the GD library PHP is using, when fontfile does not begin with a leading / then .ttf will be appended to the filename and the library will attempt to search for that filename along a library-defined font path.

/*In many cases where a font resides in the same directory as the script using it the following trick will alleviate any include problems. <?php
// Set the enviroment variable for GD*/
putenv('GDFONTPATH=' . realpath('.'));

// Name the font to be used (note the lack of the .ttf extension)
$font = 'SomeFont';
?>

Prøv derfor å fjerne ./ og .ttf fra Image::$font

Slik:

$font = 'WorstveldSlingExtra';

Endret av Nazgul
Lenke til kommentar
tror jeg fant feilen:

       for($i=0;$i<5;$i++) { 
          $nm = rand(0, 50); 
          $col = imagecolorallocate($image, $nm, $nm, $nm); 
          $str = $code[$i]; 
          $font = 1;

du setter jo $font til 1 etter at du har satt til arial.tff. Kan det være grunnen?

6217378[/snapback]

 

Definitivt!

Dette er pinlig :$

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...