2011-05-22 13 views
6

example from php.netを使用すると警告が表示され、画像が正しく表示されません。私はの.ttfフォントがhereを見つけたカスタムを使用しています/var/www/public/myfont.ttfimagettftextはフォントファイルを開くことができません

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

:私はそうのようなの.ttfファイルへの完全なパスを供給します。 Ubuntuでファイルを有効なフォントファイルとして開くことができます。私は同じ結果で他のフォントも試みました。

私は、apache2、php5、freetype6、およびphp5-gdがインストールされたUbuntu 10.04 LTS 32ビットを使用しています。私は同じ結果で、ttfファイルで777のファイルとフォルダをchmodしようとしました。

カスタムttfフォントファイルを使用してサンプルを動作させるにはどうすればよいですか?

*編集:私が使用しているコード:のphpinfoから

<?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); 
?> 

出力();

[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 

テストis_fileis_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

正確なコードを表示できますか?私は何か間違って見ることはできませんが、完全のために –

+0

あなたは100%確実なフォントの正確なパスですか?大文字と小文字の区別を考慮しますか? –

+1

そして、タイプミスがあるようです: 'tff' –

答えて

0

アップグレードディストリビューションは、問題に

を解決
0

あなたがしようとすることができ、あなたのphpファイルと同じディレクトリにあるTTFファイルを移動してみてくださいと

$font = 'UnmaskedBB.ttf'; 
+0

既に同じディレクトリであり、 '' UnmaskedBB ''が.ttfなしで存在すると仮定しています。いずれにしても、同じ警告が表示されます。 –

+0

はい、あなたが想定しているとおりです。GDライブラリを更新しようとしますか?私のバンドルはバンドルされています(2.0.34互換)。 – T1000

8

$フォントを変更挿入:

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

最初のimagettftextの前に、パスの問題がないことを確認してください。

UPDATE

あなたはfc-cacheのようなフォントキャッシュを使用している場合には、例えば、それを更新することを忘れないでください:すべてのPHPパッケージを含む

sudo fc-cache -f -v 
+0

これは残念なことに同じ結果をもたらします。しかし、いずれにしても、私は静的なフォントファイルを使用しています。 –

+0

は同じ問題を抱えていて、私のディストリビューション(Ubuntu 11.10)で動作します – Salandur

+2

これは私にとってはうまくいきました:putenv( 'GDFONTPATH ='。realpath( '。')); Ubuntu 12.04サーバーを使用していて、imagettftext()の問題を修正しました:フォントエラーメッセージを見つけたり、開くことができませんでした。 – Grant

関連する問題