imagettftext()-找不到字体位置


imagettftext() - Cannot find font location

我正在使用imagettftext()函数创建一个自定义的captcha脚本。

我已经在我的PC上成功运行并测试了代码,运行PHP(5.3.8版),但当我上传到运行PHP(5.2.17版)的共享托管帐户时,会出现以下错误

Warning: imagettftext() [function.imagettftext]: Could not find/open font in /home/pheelco/public_html/captcha.php on line 17

这是17号线;

imagettftext($img, 25, 0, 0, 25, $text, "fonts/alger.ttf", $num);

我肯定已经用那个字体上传了文件夹"字体",它在public_html文件夹中。

有什么想法吗?

注意:我没有权限更改任何PHP配置,因为我使用的是共享托管帐户。

imagettftext文档中写道:

fontfile

要使用的TrueType字体的路径。

根据PHP使用的GD库的版本fontfile不以前导/then开头。ttf将附加到文件名和库将尝试搜索该文件名沿着库定义的字体路径。

当使用低于2.0.18版本的GD库时字符而不是分号被用作"路径分隔符"用于不同字体文件。无意中使用此功能将导致警告消息:警告:找不到/open字体。对于对于这些受影响的版本,唯一的解决方案是将字体移动到不包含空格的路径。

在许多情况下,字体与脚本位于同一目录中使用以下技巧将减轻任何包含问题。

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

你试过这个吗?您可以使用gd_info来检查您正在使用哪种版本的GD。

已解决。原来文件名是"alger.TTF",文件扩展名是大写的,在我的代码中,我指的是小写扩展名。出于某种原因,这在PHP 5.3.8中仍然有效,但在PHP 5.2.17中无效。我希望这能帮助其他遇到这个问题的人。