我使用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配置,因为我使用的是共享主机帐户。
答案 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我希望这可以帮助遇到此问题的任何其他人