以前搞开发一直都是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是必须的。
其次libmcryptPHP文档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


山河永寂
2.4k 声望159 粉丝