imagettftext() - 找不到字体位置

时间:2012-01-15 00:56:28

标签: php captcha imagettftext

我使用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);

我肯定有使用该字体上传的文件夹“fonts”,它位于public_html文件夹中。

有什么想法吗?

注意:我无权更改任何PHP配置,因为我使用的是共享主机帐户。

2 个答案:

答案 0 :(得分: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版本。

答案 1 :(得分:0)

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