mac 系统,如何编译带freetype功能的php的gd模块
发布于 作者:苏南大叔 来源:程序如此灵动~php
下有个有关php
创建图片相关的gd.so
文件,似乎有段时间是gd2.so
文件,不知道为啥又变回去了。这计算机的时代,变化就是最大的不变。但mac
系统下自带的php
的gd
模块中,缺失了freetype
支持,显然不能满足国内各种开源系统的要求。
这会导致:多数图片验证码功能失效。换句话说,如果你的php
源码使用mac
做测试环境的话,那么很有可能发生的事情,就是:gd
模块缺少freetype
支持,导致图片验证码不能显示。
gd
模块缺失了freetype
的解决方案,到底是什么呢?说起来也挺简单的,解决方案就是:重新编译gd
模块... 但是事情总是没有想像中的那么简单... 在本文中,苏南大叔将带您查看mac
系统编译php
的gd
模块的事情。
本文测试环境:mac
/php7.2.2
/gd@2.1.0
/freetype@2.9
。
php
是否支持freetype
情况对比
mac
系统自带的php
,且不说是不是最新版。gd
模块似乎是构建在php
内部的,也就是说,并没有独立的gd.so
文件。所以,试图通过替换.so
模块来补齐freetype
功能,似乎是不切合实际的。那么,理想很丰满,现实很骨感。苏南大叔为了一个freetype
,将php
全部推倒重来了。相关文章请参见文末链接。
带freetype
功能的phpinfo
截图如下:
缺失freetype
功能的phpinfo
截图如下:
freetype模块支持
freetype
的支持,其实也是需要个第三方包的。然后,php
下的gd
,再把freetype
功能整合进去。所以,需要先确保freetype
的安装。
当然,读者朋友也可以试试直接跳过这一步,撞墙之后再来回头看看也行。因为你的mac
里面可能安装了这个东东,仅仅是没有在php
中启用而已。
截至发稿,freetype
的最新版是2.9
,下载地址是:
下载解压后,需要执行如下命令进行编译。
make clean
./configure --with-static --with-shared
make & make install
gd
其实还有jpeg/gif/png
等功能模块,但是除了freetype
之外,其他的模块似乎一般都是默认启用的状态,并不会出什么纰漏。所以,这里也不会特别处理。
方案一:带freetype
的gd
功能作为php
的内置功能
安装脚本如下,不解释。因为,本节内容并非本文的主要阐述主体。参数--with-gd
保证:编译完成的gd
模块固化在php
之中,当然,并不是说,./configure
就不能添加别的参数了,别的参数,如果你需要,就自行添加即可。
cd ext/gd/
make clean
phpize
./configure --with-freetype-dir --with-jpge-dir --with-png-dir --with-gd
make
sudo make install
方案二:带freetype
的gd
功能模块作为第三方模块进行构建
这个方案中,gd
是一个独立模块,可以在php.ini
中独立配置是否启用。相对而言,是比较灵活的。建议大家使用这个方案,在这个方案里面,设置到php
源码(自行到官网下载合适版本)目录下面的ext/gd/
目录,一切操作都是基于这个目录进行的。切记。
在具体操作之前,请自行阅读有关php
源码编译的文章,请确保系统路径下的php-config
以及phpize
是配套的!譬如--with-php-config=/usr/bin/php-config
,这个可能是你需要的参数。
cd ext/gd/
phpize
./configure --with-php-config=/usr/bin/php-config --with-freetype-dir --with-jpge-dir --with-png-dir
make
sudo make install
注意,如果单单./configure
,而不添加相关参数的话。生成的gd.so
文件,是不包含我们期待的freetype
功能的,是个阉割版的gd
。
- 一定注意添加相关参数
--with-freetype-dir --with-jpge-dir --with-png-dir
- 在
install
的过程中,也许会碰到目录权限的问题。您可以参照下面的截图解决问题
得到gd.so
之后,在php.ini
中启用即可,重启生效。可以用下面的脚本确认一下php.ini
的文件位置。
php -r "phpinfo();" | grep php.ini
更多查找php.ini
文件的方式,请点击下面这个链接:
重启php
后,新的gd
库生效:
相关链接
- 《mac系统编译php72》 https://newsn.net/say/mac-build-php72.html
- 《如何关闭mac系统的rootless保护》 https://newsn.net/say/mac-rootless-disable.html
- 《如何查找 php.ini 的位置?》 https://newsn.net/say/whereis-php-ini.html
总结
freetype
功能模块是验证码相关必备功能,这个模块对于国人来说,是个刚需。但是万恶的mac
,居然是默认不开启这个功能的。而如果想要开启它,通过源码编译的途径,显然是条非常痛苦的途径,并不建议大家走这条路。
但是喜欢折腾的你,还是感谢你的耐心阅读。欢迎点赞、打赏、转载苏南大叔的文章。更多php
相关文章,请点击这里查看:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
写的不错~
学习了
看下啦
xiexie
xiexie
想知道下载地址
谢谢分享