安装了GD库出现imageantialias未定义函数错误

18
我需要帮助解决一个PHP脚本问题。这是一个已经嵌入网站的CMS。在尝试添加新产品图片或编辑当前图片时,我遇到了以下错误:
致命错误:调用未定义的函数imageantialias(),位于/home/mounts/home/m/mclh/web/admin/library/functions.php的第233行
这是该区域的代码:
   if ($tmpDest['extension'] == "gif" || $tmpDest['extension'] == "jpg")
    {
       $destFile  = substr_replace($destFile, 'jpg', -3);
       $dest      = imagecreatetruecolor($w, $h);
       imageantialias($dest, TRUE);
    } elseif ($tmpDest['extension'] == "png") {
       $dest = imagecreatetruecolor($w, $h);
       imageantialias($dest, TRUE);
    } else {
      return false;
    }

第233行是往下数的第5行。


3
错误提示显示该函数未定义,请确保你已经在该文件中定义了该函数,或者你已经包含了定义该函数的文件。 - Nobita
6个回答

17
更新:看起来 imageantialias() 函数只有在 PHP 使用 GD 编译时才可用,因此仅通过扩展文件包含该扩展不足够。
PHP手册中可以得知:

注意:此函数仅在使用 GD 库的捆绑版本编译的 PHP 中可用。

请检查您的 phpinfo() 并查看其中是否存在标志 --with-gd=shared(或类似标志,可能只是 --with-gd)。如果找不到,请重新编译您的 PHP 并加入该标志。
更详细地讲: PHP 扩展可以通过在 php.ini 中包含 .dll (Windows) 或 .so (Unix) 文件来加载,也可以与 PHP 一起编译。编译听起来很吓人,但实际上非常容易。你需要做的就是(在 Unix 上):
  1. 复制在您的 phpinfo() 中显示的编译字符串
  2. 添加所需的新标志
  3. 运行
    • ./configure ... 从您的 phpinfo 中所有的东西加上新标志
    • make clean
    • make
    • make install
  4. 查看您的 phpinfo() 并微笑 :)

第一个答案(并未正确): imageantialias()PHP GD 扩展的函数。是否已安装并正确配置了 GD?
从您的代码中,似乎已经安装了 GD,因为 imagecreatetruecolor() 也是 GD 函数并且似乎可以工作。这表明您正在使用 PHP 版本低于 4.3.2,不支持 imageantialias()

请查看您的phpinfo()以确认我的结论是否正确。在那里,您将看到您正在使用的PHP版本,您还将看到GD是否已安装并正常工作!


我想是这样,这不是我设置的。我对php不是很熟练。我认为它在某个时候是工作的,因为网站上已经有数百个产品了。 - John Stant
3
程序员经常需要继承大量的旧代码,这似乎是一项艰巨的任务,但却为他们提供了一份工作保障吗? - k to the z
@markus,我相信如果他的GD版本显示类似于bundled(2.0.34兼容),那就等同于--with-gd=shared标志。 - k to the z
啊,如果我是你,我不会在公共场合发布我的phpinfo,请删除它或者至少尽快移除公共访问! - markus
@markus:主要是让你看一下。现在已经删除了。我的任务是对网站进行设计更新和前端修改,但在解决此错误之前无法执行。我有点困惑该怎么做。你的帖子非常有帮助,但我真的不知道接下来该去哪里。 - John Stant
显示剩余18条评论

3
似乎Debian / Ubuntu的PHP没有捆绑GD库,出于某些安全原因。您需要重新编译PHP,按照这个有用的逐步指南使用Debian / Ubuntu进行操作:http://www.maxiwebs.co.uk/gd-bundled/compilation.php 打开终端。 通过输入su并在提示时输入根密码来成为root。
下载一些我们将需要安装的软件包。键入apt-get install build-essential debhelper fakeroot dpkg-dev mysql-server。当MySQL安装要求输入根密码时,请考虑一个密码,然后保护好它。 将当前目录更改为源目录。cd /usr/src。
通过输入apt-get source php5下载PHP 5源代码。 我们还需要PHP 5依赖项。要下载这些内容,请输入apt-get build-dep php5。
进入下载的PHP目录。cd php5-XXXX。在输入php5-后按下回车键以完成文件夹名称。
现在我们需要编辑配置文件以将其更改为GD的捆绑版本。键入nano debian/rules。
定位到这一行 --with-gd=shared,/usr --enable-gd-native-ttf \ 并将其更改为 --with-gd=shared --enable-gd-native-ttf \,删除 /usr。(按 ctrl+w 查找内容,如果搜索 gd,则靠近第二次出现)。要保存文件,我们需要按ctrl+x,然后按y,最后按回车键。
现在我们需要编辑MySQL设置文件。输入nano debian/setup-mysql.sh。注意:如果此文件不存在,请不要担心,您可以跳过步骤10和11。
找到 $mysqld > $datadir/run.log 2>&1 & 这一行,并将其更改为 $mysqld --user=root > $datadir/run.log 2>&1 &,添加 --user=root。要保存文件,我们需要按ctrl+x,然后按y,最后按回车键。
现在我们已经完成设置,现在需要编译它。输入dpkg-buildpackage -rfakeroot,或者如果您使用的是Ubuntu 11.10,则应输入dpkg-buildpackage -d,这需要一些时间。
完成后,您应该在父目录中拥有大量的.deb文件。找到以php5-gd开头的文件。
双击它进行安装,或者从终端输入dpkg -i php5-gdXXXXXXX,只需在键入php5-gd后按下 以完成文件名即可。
现在,我们需要通过保持软件包来阻止更新替换您闪亮新的GD库与常规的非捆绑版本。运行以下命令:apt-get install wajig。 选择“yes”进行安装。
安装完成后,输入以下内容:wajig hold php5-gd。
恭喜!您现在已安装了GD库的捆绑版本,现在可以自由发挥创意!

3

2

0

-1

这意味着您要么拼写了imageantialias()函数错误,要么在您的代码中未定义该函数,或者它所属的第三方代码未包含在您当前的文档中。

更新: GD已安装。这是一个谜。


正如我之前所述,PHP 4.2x 中存在一个窗口期,在此期间第一个函数可能会抛出警告,而另一个函数则会抛出错误。 - k to the z
更新:不行。他的PHP版本是5.3.2。 - k to the z

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接