如何正确配置对 PHP 的 GD 支持?我在调用 imagettfbbox() 时遇到错误
How can I correctly configure GD support for PHP? I am getting an error calling imagettfbbox()
为 Symfony 2.0 使用 Symfony2.0 和 Gregwar Captcha Bundle
操作系统:Mac OS 10.10 (Yosemite)
按照说明安装 CaptchaBundle 后,我第一次使用它时,出现以下错误:
Fatal error: Call to undefined function
Gregwar\CaptchaBundle\Generator\imagettfbbox() in
/Users/pgbonino/Sites/preparatest/vendor/bundles/Gregwar/CaptchaBundle/Generator/CaptchaGenerator.php
on line 176
我的 phpinfo 通知如下:
<h2><a name="module_gd">gd</a></h2>
<table border="0" cellpadding="3" width="600">
<tbody><tr><td class="e">GD Support </td><td class="v">enabled </td></tr>
<tr><td class="e">GD Version </td><td class="v">bundled (2.1.0 compatible) </td></tr>
<tr><td class="e">GIF Read Support </td><td class="v">enabled </td></tr>
<tr><td class="e">GIF Create Support </td><td class="v">enabled </td></tr>
<tr><td class="e">JPEG Support </td><td class="v">enabled </td></tr>
<tr><td class="e">libJPEG Version </td><td class="v">9 compatible </td></tr>
<tr><td class="e">WBMP Support </td><td class="v">enabled </td></tr>
<tr><td class="e">XBM Support </td><td class="v">enabled </td></tr>
</tbody></table>
所以,显然 GD 模块已正确加载。
知道我遇到的错误吗?
将您的 phpinfo() 输出与我的进行比较,我发现尽管 GD 处于活动状态,但您的 PHP 安装中缺少 FreeType。 PHP docs on imagettfbbox() 表示 "This function requires both the GD library and the FreeType library."
这是我的 phpinfo() 的相应部分:
gd
GD Support enabled
GD Version bundled (2.1.0 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.5.3
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 8
PNG Support enabled
libPNG Version 1.6.13
WBMP Support enabled
XBM Support enabled
phpinfo 开头的 Configure Command 块也应该列出 freetype:
'./configure' '--prefix=/usr/local/Cellar/php55/5.5.18' '--localstatedir=/usr/local/var' '--sysconfdir=/usr/local/etc/php/5.5' '--with-config-file-path=/usr/local/etc/php/5.5' '--with-config-file-scan-dir=/usr/local/etc/php/5.5/conf.d' '--with-iconv-dir=/usr' '--enable-dba' '--with-ndbm=/usr' '--enable-exif' '--enable-intl' '--enable-soap' '--enable-wddx' '--enable-ftp' '--enable-sockets' '--enable-zip' '--enable-shmop' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-mbstring' '--enable-mbregex' '--enable-bcmath' '--enable-calendar' '--with-zlib=/usr/local/opt/zlib' '--with-ldap' '--with-ldap-sasl=/usr' '--with-xmlrpc' '--with-kerberos=/usr' '--with-gd' '--enable-gd-native-ttf' '--with-freetype-dir=/usr/local/opt/freetype' '--with-icu-dir=/usr/local/opt/icu4c' '--with-jpeg-dir=/usr/local/opt/jpeg' '--with-png-dir=/usr/local/opt/libpng' '--with-gettext=/usr/local/opt/gettext' '--with-libedit' '--with-unixODBC=/usr/local/opt/unixodbc' '--with-pdo-odbc=unixODBC,/usr/local/opt/unixodbc' '--mandir=/usr/local/Cellar/php55/5.5.18/share/man' '--with-mhash' '--with-curl' '--with-snmp=/usr' '--with-bz2=/usr' '--disable-debug' '--with-openssl=/usr' '--with-xsl=/usr' '--with-apxs2=/usr/sbin/apxs' '--libexecdir=/usr/local/Cellar/php55/5.5.18/libexec' '--with-mysql-sock=/tmp/mysql.sock' '--with-mysqli=mysqlnd' '--with-mysql=mysqlnd' '--with-pdo-mysql=mysqlnd' '--enable-pcntl' '--enable-zend-signals' '--enable-dtrace' '--enable-opcache'
可能的解决方案
根据您对我的 instructions to install a full PHP on OSX Yosemite 的评论,我知道您已经使用 Homebrew 包管理器安装了 PHP。所以你可能想试试这个来解决你的问题:
brew install freetype
为 Symfony 2.0 使用 Symfony2.0 和 Gregwar Captcha Bundle 操作系统:Mac OS 10.10 (Yosemite)
按照说明安装 CaptchaBundle 后,我第一次使用它时,出现以下错误:
Fatal error: Call to undefined function Gregwar\CaptchaBundle\Generator\imagettfbbox() in /Users/pgbonino/Sites/preparatest/vendor/bundles/Gregwar/CaptchaBundle/Generator/CaptchaGenerator.php on line 176
我的 phpinfo 通知如下:
<h2><a name="module_gd">gd</a></h2>
<table border="0" cellpadding="3" width="600">
<tbody><tr><td class="e">GD Support </td><td class="v">enabled </td></tr>
<tr><td class="e">GD Version </td><td class="v">bundled (2.1.0 compatible) </td></tr>
<tr><td class="e">GIF Read Support </td><td class="v">enabled </td></tr>
<tr><td class="e">GIF Create Support </td><td class="v">enabled </td></tr>
<tr><td class="e">JPEG Support </td><td class="v">enabled </td></tr>
<tr><td class="e">libJPEG Version </td><td class="v">9 compatible </td></tr>
<tr><td class="e">WBMP Support </td><td class="v">enabled </td></tr>
<tr><td class="e">XBM Support </td><td class="v">enabled </td></tr>
</tbody></table>
所以,显然 GD 模块已正确加载。
知道我遇到的错误吗?
将您的 phpinfo() 输出与我的进行比较,我发现尽管 GD 处于活动状态,但您的 PHP 安装中缺少 FreeType。 PHP docs on imagettfbbox() 表示 "This function requires both the GD library and the FreeType library."
这是我的 phpinfo() 的相应部分:
gd
GD Support enabled
GD Version bundled (2.1.0 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.5.3
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 8
PNG Support enabled
libPNG Version 1.6.13
WBMP Support enabled
XBM Support enabled
phpinfo 开头的 Configure Command 块也应该列出 freetype:
'./configure' '--prefix=/usr/local/Cellar/php55/5.5.18' '--localstatedir=/usr/local/var' '--sysconfdir=/usr/local/etc/php/5.5' '--with-config-file-path=/usr/local/etc/php/5.5' '--with-config-file-scan-dir=/usr/local/etc/php/5.5/conf.d' '--with-iconv-dir=/usr' '--enable-dba' '--with-ndbm=/usr' '--enable-exif' '--enable-intl' '--enable-soap' '--enable-wddx' '--enable-ftp' '--enable-sockets' '--enable-zip' '--enable-shmop' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-mbstring' '--enable-mbregex' '--enable-bcmath' '--enable-calendar' '--with-zlib=/usr/local/opt/zlib' '--with-ldap' '--with-ldap-sasl=/usr' '--with-xmlrpc' '--with-kerberos=/usr' '--with-gd' '--enable-gd-native-ttf' '--with-freetype-dir=/usr/local/opt/freetype' '--with-icu-dir=/usr/local/opt/icu4c' '--with-jpeg-dir=/usr/local/opt/jpeg' '--with-png-dir=/usr/local/opt/libpng' '--with-gettext=/usr/local/opt/gettext' '--with-libedit' '--with-unixODBC=/usr/local/opt/unixodbc' '--with-pdo-odbc=unixODBC,/usr/local/opt/unixodbc' '--mandir=/usr/local/Cellar/php55/5.5.18/share/man' '--with-mhash' '--with-curl' '--with-snmp=/usr' '--with-bz2=/usr' '--disable-debug' '--with-openssl=/usr' '--with-xsl=/usr' '--with-apxs2=/usr/sbin/apxs' '--libexecdir=/usr/local/Cellar/php55/5.5.18/libexec' '--with-mysql-sock=/tmp/mysql.sock' '--with-mysqli=mysqlnd' '--with-mysql=mysqlnd' '--with-pdo-mysql=mysqlnd' '--enable-pcntl' '--enable-zend-signals' '--enable-dtrace' '--enable-opcache'
可能的解决方案
根据您对我的 instructions to install a full PHP on OSX Yosemite 的评论,我知道您已经使用 Homebrew 包管理器安装了 PHP。所以你可能想试试这个来解决你的问题:
brew install freetype