PHP GD Library中没有PNG支持,但支持GIF和JPEG。我怎样才能解决这个问题?

时间:2014-08-04 17:59:45

标签: php image-processing gd mamp libpng

我在OS X Yosemite上运行MAMP服务器版本3.0.5。在执行期间,我的php文件似乎缺少PNG支持 甚至在我使用MAMP 2.1之前,它在png相关功能上都有致命错误。

Jpeg函数可以正常工作。

这就是我的phpinfo的样子:

Build Date  Apr 10 2014 17:21:18
Configure Command   './configure' '--with-mysql=/Applications/MAMP/Library' '--with-apxs2=/Applications/MAMP/Library/bin/apxs' '--with-gd' '--with-jpeg-dir=/Applications/MAMP/Library' '--with-png-dir=/Applications/MAMP/Library' '--with-zlib' '--with-zlib-dir=/Applications/MAMP/Library' '--with-freetype-dir=/Applications/MAMP/Library' '--prefix=/Applications/MAMP/bin/php/php5.5.10' '--exec-prefix=/Applications/MAMP/bin/php/php5.5.10' '--sysconfdir=/Applications/MAMP/bin/php/php5.5.10/conf' '--with-config-file-path=/Applications/MAMP/bin/php/php5.5.10/conf' '--enable-ftp' '--enable-gd-native-ttf' '--with-bz2=/usr' '--with-ldap' '--with-mysqli=/Applications/MAMP/Library/bin/mysql_config' '--with-t1lib=/Applications/MAMP/Library' '--enable-mbstring=all' '--with-curl=/Applications/MAMP/Library' '--enable-sockets' '--enable-bcmath' '--with-imap=shared,/Applications/MAMP/Library/lib/imap-2007f' '--enable-soap' '--with-kerberos' '--enable-calendar' '--with-pgsql=shared,/Applications/MAMP/Library/pg' '--enable-exif' '--with-libxml-dir=/Applications/MAMP/Library' '--with-gettext=shared,/Applications/MAMP/Library' '--with-xsl=/Applications/MAMP/Library' '--with-pdo-mysql=shared,/Applications/MAMP/Library' '--with-pdo-pgsql=shared,/Applications/MAMP/Library/pg' '--with-mcrypt=shared,/Applications/MAMP/Library' '--with-openssl' '--enable-zip' '--with-iconv=/Applications/MAMP/Library' '--enable-opcache' '--enable-intl' '--with-tidy=shared' '--with-icu-dir=/Applications/MAMP/Library'

phpinfo

这就是GD部分包含的内容:

GD Support  enabled
GD Version  bundled (2.1.0 compatible)
FreeType Support    enabled
FreeType Linkage    with freetype
FreeType Version    2.4.12
T1Lib Support   enabled
GIF Read Support    enabled
GIF Create Support  enabled
JPEG Support    enabled
libJPEG Version 8
PNG Support enabled
libPNG Version  1.6.6
WBMP Support    enabled
XBM Support enabled

gd info

为了测试代码中存在的png执行和gd库,我运行以下代码:

if (extension_loaded('gd')) {
  echo "\nGD support is -Loaded-";
}else{
  echo "\nGD support is == NOT == loaded ";
}
if(function_exists('gd_info')){
  echo "\nGD function support is -Available- ";
}else{
  echo "\nGD function support is == NOT == available ";
}

if(function_exists('imagepng')){
  echo "\nimagepng() -Exists-";
}else{
  echo "\nimagepng() ==== DOES NOT ==== Exist";
}


if(function_exists('imagejpeg')){
  echo "\nimagejpeg() -Exists-";
}else{
  echo "\nImage Function ==== DOES NOT ==== Exists";
}

这是我得到的结果:

result of the code execution

我注意到的一件事是GD中的libPNG版本是1.6.6'而我计算机上的libPNG版本是' 1.6.12'。是否有可能导致PNG功能出现问题?

trying to install libpng

2 个答案:

答案 0 :(得分:12)

对于那些来到这里并且具有相同症状的人(在Yosemite下使用GD,但有活动但缺少PNG支持)但是谁正在使用OS X附带的Apache和PHP(而不是MAMP),这是一个答案。

在这种情况下,问题的原因是Yosemite的PHP没有编译的PNG和FreeType支持。

此处描述了此情况下的解决方案:https://stackoverflow.com/a/26505558/430742

答案 1 :(得分:3)

根据您发布的屏幕截图,不仅仅是PNG出现问题。您包含的phpinfo()浏览器输出显示FreeType,T1Lib,XBM和PNG全部启用并且可用,而PHP脚本的结果的命令行屏幕截图显示其中没有一个可用。

因此,您很可能在两种情况下都使用两种不同的PHP安装:一种是通过浏览器上的MAMP,另一种是通过命令行上的本地安装。通过MAMP /浏览器运行脚本以确保您收到相同的PNG错误。

运行命令检查正在使用的PHP二进制文件:

which php

如果它在/ etc中列出了PHP路径或MAMP路径以外的任何其他路径,那么在运行命令时需要显式使用MAMP PHP路径。或者,您可以在.bash_profile文件中设置一个别名,方法是添加一行(用您正确的版本替换php5.X.X):

alias php=/Applications/MAMP/bin/php/php5.X.X/bin/php

您也可以尝试删除旧的PHP bin文件,并为MAMP PHP bin创建一个符号链接:

sudo ln -s /Applications/MAMP/bin/php/php5.X.X/bin/php OLDPATH

希望有所帮助。