2011-05-22 16 views
6

Utilizzo di example from php.net Viene visualizzato un avviso e l'immagine non viene visualizzata correttamente. Io fornisco un percorso completo del file TTF in questo modo: /var/www/public/myfont.ttfimagettftext non può aprire il file di font

PHP Warning: imagettftext() [<a href='function.imagettftext'>function.imagettftext</a>]: Could not find/open font in <phpfile> 

Sto usando un custom .ttf carattere trovato here. Posso aprire il file bene in Ubuntu come file di font valido. Ho anche provato altri caratteri, con lo stesso risultato.

Sto usando Ubuntu 10.04 LTS a 32 bit, con apache2, php5, freetype6 e php5-gd installati. Ho anche provato a chmod 777 file e cartelle con file ttf, con lo stesso risultato.

Come posso ottenere l'esempio di lavoro utilizzando un file di font ttf personalizzato?

* Modifica: Il codice che sto usando:

<?php 
// File is: /var/www/public/test.php 
// Apart from $font variable, it's copy-pasted from php.net 

// Set the content-type 
header('Content-Type: image/png'); 

// Create the image 
$im = imagecreatetruecolor(400, 30); 

// Create some colors 
$white = imagecolorallocate($im, 255, 255, 255); 
$grey = imagecolorallocate($im, 128, 128, 128); 
$black = imagecolorallocate($im, 0, 0, 0); 
imagefilledrectangle($im, 0, 0, 399, 29, $white); 

// The text to draw 
$text = 'Testing...'; 
// Replace path by your own font path 
$font = '/var/www/public/UnmaskedBB.ttf'; 

// Add some shadow to the text 
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text); 

// Add the text 
imagettftext($im, 20, 0, 10, 20, $black, $font, $text); 

// Using imagepng() results in clearer text compared with imagejpeg() 
imagepng($im); 
imagedestroy($im); 
?> 

uscita da phpinfo();

[gd] 
GD Support enabled 
GD Version 2.0 
FreeType Support enabled 
FreeType Linkage with freetype 
FreeType Version 2.3.11 
T1Lib Support enabled 
GIF Read Support enabled 
GIF Create Support enabled 
JPEG Support enabled 
libJPEG Version  6b 
PNG Support  enabled 
libPNG Version 1.2.42 
WBMP Support enabled 

Testing is_file e is_readable:

$font = realpath('./').'/UnmaskedBB.ttf'; 
echo "Font: ".$font; // /var/www/public/UnmaskedBB.ttf 
echo "Is file? ".is_file($font); // 1 
echo "Is readable? ".is_readable($font); // 1 
+1

Puoi mostrare il codice esatto? Non riesco a vedere nulla di sbagliato ma per completezza –

+0

Sei sicuro al 100% che sia il percorso esatto del font? Prendendo in considerazione la case sensitive? –

+1

E sembra esserci un errore di battitura: 'tff' –

risposta

0

Aggiornamento distro, compresi tutti i pacchetti PHP ha risolto il problema

0

Prova a spostare il file TTF nella stessa directory del file php e cambiare $ carattere a

$font = 'UnmaskedBB.ttf'; 
+0

È già nel stessa directory, e presumo che tu intenda 'UnmaskedBB' senza il file .ttf dato che non c'è nessun comando '/' in atto? In ogni caso - lo stesso avviso è presente –

+0

Sì, intendo che, come presumi ... Puoi provare ad aggiornare la tua libreria GD - la mia è in bundle (compatibile 2.0.34) e funziona bene. – T1000

8

Si potrebbe provare a inserisci:

putenv('GDFONTPATH=' . realpath('.')); 

di fronte al primo imagettftext, solo per assicurarsi che non vi sia alcun problema di percorso.

UPDATE

Nel caso in cui si utilizza cache dei font come fc-cache, non dimenticate di aggiornarlo, ad esempio:

sudo fc-cache -f -v 
+0

Questo dà lo stesso risultato sfortunatamente.Ma in ogni caso sto usando un file di font statico, non un built-in. –

+0

ha avuto lo stesso problema e ha funzionato sulla mia distro (Ubuntu 11.10) – Salandur

+2

Questo ha funzionato per me: putenv ('GDFONTPATH ​​='. Realpath ('.')); Sto usando il server Ubuntu 12.04 e ha risolto il problema di imagettftext(): Impossibile trovare/aprire il messaggio di errore del font. – Grant

Problemi correlati