我在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'
这就是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
为了测试代码中存在的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";
}
这是我得到的结果:
我注意到的一件事是GD中的libPNG版本是1.6.6'而我计算机上的libPNG版本是' 1.6.12'。是否有可能导致PNG功能出现问题?
答案 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
希望有所帮助。