以前搞开发一直都是OS X自带的php5.5,然后需要的扩展使用phpize编译,但是逐渐的自带的php已经无法满足我了,所以准备自己手动编译php。
下载依赖
首先需要下载php的依赖的库,OS X自带了许多有用的库,但是这些需要你安装xcode命令行工具,这些库的头文件和静态库动态库文件被存放在/usr目录下,包括curl、openssl、libedit等库,我们只需要下载gd库依赖的libjpeg libpng freetype2就可以了。
具体需要的库可以查看PHP文档
编译安装依赖库
现在我们开始编译下列库
- freetype2
- libjpeg
- libpng
- libmcrypt
因为不想要把这些库永久编译安装到系统,所以我们需要新建一个文件夹来存放这些库mkdir ~/local
,然后开始编译这些库
注意!由于是编译安装到自定义目录,所以每个库的
./configure --prefix=/path/to/local
是必须的。
其次libmcrypt
在PHP文档Mcrypt.installation中推荐增加--disable-posix-threads
,所以我们也需要加上这个选项。
最后libmcrypt
还需要启用静态库,因为我们希望php是以静态库的方式加载这个./configure --prefix=/path/to/local --disable-posix-threads --enable-static
最后请注意将所有的dylib等动态库文件全部删除或者重命名,只留下xxx.a
静态库文件,否则编译的时候php会优先使用动态库文件,那样就无法删除~/local/
文件夹了
编译PHP
没什么话好说,就是Unix三板斧./configure make&make install
./configure --enable-fpm --enable-cli --with-config-file-path=/usr/local/etc --with-config-file-scan-dir=/usr/local/etc/php.d --with-libxml-dir=/usr --with-openssl=/usr --with-kerberos=/usr --with-zlib=/usr --with-zlib-dir=/usr --enable-bcmath --with-bz2=/usr --enable-calendar --with-curl=/usr --enable-exif --enable-ftp --with-openssl-dir=/usr --with-jpeg-dir=/Users/tangjiacheng/Downloads/local --with-png-dir=/Users/tangjiacheng/Downloads/local --with-freetype-dir=/Users/tangjiacheng/Downloads/local --enable-gd-native-ttf --with-ldap=/usr --with-ldap-sasl=/usr --enable-mbstring --with-mcrypt=/Users/tangjiacheng/Downloads/local --with-mysql --with-mysql-sock=/tmp/mysql.sock --with-mysqli --with-pdo-mysql --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-tidy=/usr --enable-wddx --with-xmlrpc --with-iconv-dir=/usr --with-xsl=/usr --enable-zip --enable-mysqlnd --with-libedit --with-gd
最后安装完成了还需要复制php-production.ini
或者php-development.ini