Librerie gd non funzionano su linux

Non riesco a capire perchè con xampp tutto funzioni, mentre se procedo con php installato da me, con apache mi dia errore negli script che sfruttano queste librerie, eppure se da shell do;

$ php -i
[...]
gd

GD Support => enabled
GD Version => bundled (2.0.34 compatible)
FreeType Support => enabled
FreeType Linkage => with freetype
FreeType Version => 2.1.9
T1Lib Support => enabled
GIF Read Support => enabled
GIF Create Support => enabled
JPG Support => enabled
PNG Support => enabled
WBMP Support => enabled
XPM Support => enabled
XBM Support => enabled
[...]

La versione di php è 5.2.2 :\

Ecco uno script di prova che mi restituisce errore;

<?
header("Content-Type: image/gif");
$ruta="lol.gif";
if ($_SERVER["HTTP_X_FORWARDED_FOR"]){
    $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}else{
    $ip = $_SERVER["REMOTE_ADDR"];
}
$ip = explode(",", $ip);
$ip = $ip[0];
$img = imagecreatefromgif($ruta);
#$color = imagecolorallocate($img, 255, 255, 255);
$color = imagecolorallocate($img, 0, 0, 0);
$font = 'font/arial.ttf';
$size = 10;
imagettftext($img, $size,0,10,20, $color, $font,$ip);
imagegif($img);
imagedestroy($img);
?>

L'errore che visualizza è "L'immagine "http://localhost/~dad/po.gif"  non può essere visualizzata perchè contiene degli errori" se visualizzo il codice dell'immagine con firefiox mi restituisce il codice php dello script, per far parsare le immagini gif come script php ho inserito questo file htacess all'interno della cartella con lo script:

<FilesMatch "^.*\.gif"> 
   SetHandler application/x-httpd-php 
</FilesMatch>

Con xampp funziona tutto mentre con apache/php/mysql configurati a mano non funge ç_ç

inviato 9 anni fa
DaD
DaD
1
X 0 X

ma hai caricato l'estensione GD? Da phpinfo() riesci a vedere la sezione dedicata alle GD?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

si ...

risposto 9 anni fa
DaD
DaD
1
X 0 X

il font che stai utilizzando è disponibile sotto linux? Si trova nella cartella che hai specificato nello script?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
il font che stai utilizzando è disponibile sotto linux? Si trova nella cartella che hai specificato nello script?

Certo. Ma come ti ho detto il problema non risiede certamente nello script perchè se uso xampp, funziona tutto senza problemi ...

risposto 9 anni fa
DaD
DaD
1
X 0 X

quindi in pratica non ti esegue il codice ma si limita ad inviarlo al browser...  :(

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
quindi in pratica non ti esegue il codice ma si limita ad inviarlo al browser...  :(

Eh ... ma in pratica non so il perchè di tutto ciò  :(

risposto 9 anni fa
DaD
DaD
1
X 0 X

Ho provato a verificare che le librerie ci fossero e venissero usate, in questo modo;

<? var_dump(gd_info()); ?>

Ed il risultato è questo;

array(12) {
  ["GD Version"]=>
  string(27) "bundled (2.0.28 compatible)"
  ["FreeType Support"]=>
  bool(true)
  ["FreeType Linkage"]=>
  string(13) "with freetype"
  ["T1Lib Support"]=>
  bool(false)
  ["GIF Read Support"]=>
  bool(true)
  ["GIF Create Support"]=>
  bool(true)
  ["JPG Support"]=>
  bool(true)
  ["PNG Support"]=>
  bool(true)
  ["WBMP Support"]=>
  bool(true)
  ["XPM Support"]=>
  bool(false)
  ["XBM Support"]=>
  bool(true)
  ["JIS-mapped Japanese Font Support"]=>
  bool(false)
}

Non so più cosa pensare  :'(

risposto 9 anni fa
DaD
DaD
1
X 0 X

se vedi il codice PHP quando apri un'immagine allora il problema è che Apache non passa lo script a PHP per essere eseguito ma lo rimanda al browser.

Quindi le righe:

<FilesMatch "^.*\.gif">

   SetHandler application/x-httpd-php

</FilesMatch>

non stanno funzionando.

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Non credo sia quello il problema Gianni, infatti mi vengono creati errori su tutti gli script che utilizzano quelle librerie, quindi anche quelli con normale estensione php, ed inoltre funziona tutto su xampp così com'è senza nessuna modifica ...

Sono anche passato ad apache 2.2.4 (prima ero sulla versione stable di slackware) per cercare di risolvere ma il problema resta  :'(

risposto 9 anni fa
DaD
DaD
1
X 0 X

ma non ricevi un preciso messaggio di errore?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
ma non ricevi un preciso messaggio di errore?

L'errore è il più ambiguo che ho mai visto;

L'immagine "http://localhost/~dad/po.gif" non può essere visualizzata perchè contiene degli errori.

Se visualizzo il codice dell'immagine mi restituisce il codice dello script in php come ho già detto prima.

risposto 9 anni fa
DaD
DaD
1
X 0 X

Il primo errore che ricevi è generato dal browser, non da PHP. Se poi quando apri l'immagine trovi lo script PHP che avrebbe dovuto generare l'immagine allora è evidente che Apache non sta interpretando il codice ma semplicemente lo invia al browser. Quindi le righe:

<FilesMatch "^.*\.gif">

   SetHandler application/x-httpd-php

</FilesMatch>

non stanno funzionando.

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Il primo errore che ricevi è generato dal browser, non da PHP. Se poi quando apri l'immagine trovi lo script PHP che avrebbe dovuto generare l'immagine allora è evidente che Apache non sta interpretando il codice ma semplicemente lo invia al browser. Quindi le righe:

<FilesMatch "^.*\.gif">

   SetHandler application/x-httpd-php

</FilesMatch>

non stanno funzionando.

Allora con questo ragionamento lo script in estensione php dovrebbe funzionare, ed invece riveco lo stesso errore...

risposto 9 anni fa
DaD
DaD
1
X 0 X

quindi se lanci uno script .php che genera un'immagine al browser viene inviato il codice PHP al posto dell'immagine?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
quindi se lanci uno script .php che genera un'immagine al browser viene inviato il codice PHP al posto dell'immagine?

Se lancio un codice che genera un'immagine il browser visualizza sempre lo stesso errore, ma se visualizzo il codice della pagina vedo cose del genere;

PNG

???
IHDR???ú???È???¼0???

Quindi credo che lo script venga parsato, ma non venga interpretato in modo corretto, quindi bho  :-\

risposto 9 anni fa
DaD
DaD
1
X 0 X

Controlla se hai degli spazi o degli "a capo" prima o dopo i tag <?php

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Sono finalmente riuscito a far andare le gd, ora gli script che usano le librerie in estensione php e quelli modificati da me con l'htaccess funzionano senza problemi, era un problema di apache in quanto non parsava per bene le librerie php, infatti avendo aggiornato da php 5.1 a 5.2 apache aveva i vecchi riferimenti di php :D

risposto 9 anni fa
DaD
DaD
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda