1

我正在使用 imagettftext() 函数来创建自定义验证码脚本。

我已经在我的 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 配置,因为我使用的是共享主机帐户。

4

2 回答 2

4

imagettftext文档说:

fontfile

您希望使用的 TrueType 字体的路径。

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

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

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

<?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 版本。

于 2012-01-15T01:07:38.737 回答
0

解决了。原来文件名是“alger.TTF”,文件扩展名大写,在我的代码中,我指的是小写扩展名。出于某种原因,这仍然适用于 PHP 5.3.8 但不适用于 PHP 5.2.17 我希望这可以帮助遇到此问题的其他人

于 2012-01-27T12:53:59.623 回答