imagettftext не может открыть файл шрифта

Используя пример с php.net, я получаю предупреждение, и изображение отображается неправильно. Я предоставляю полный путь к файлу.ttf примерно так: /var/www/public/myfont.ttf

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

Я использую пользовательский шрифт.ttf, найденный здесь. Я могу открыть файл прекрасно в Ubuntu как действительный файл шрифта. Я также пробовал другие шрифты, с тем же результатом.

Я использую Ubuntu 10.04 LTS 32 bit, с установленными apache2, php5, freetype6 и php5-gd. Я также попытался chmod 777 файл и папка с файлом ttf, с тем же результатом.

Как я могу получить пример работы с использованием файла шрифта ttf?

* Изменить: код, который я использую:

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

Вывод из 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 

тестирование is_file а также 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

3 ответа

Решение

Обновление дистрибутива, включая все пакеты php, решило проблему

Вы можете попробовать вставить:

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

перед первым imagettftextпросто чтобы убедиться, что это не проблема пути.

ОБНОВИТЬ

Если вы используете кеши шрифтов, такие как fc-cache, не забудьте обновить его, например:

sudo fc-cache -f -v

Попробуйте переместить файл ttf в тот же каталог, что и файл php, и измените $font на

$font = 'UnmaskedBB.ttf';

https://www.php.net/manual/en/function.imagettftext.php

Примечание. Эта функция доступна, только если PHP скомпилирован с поддержкой freetype (--with-freetype-dir =DIR)

sudo apt-get install freetype*

Другие вопросы по тегам