源码编译安装7.2.18,及编译安装php扩展
系统:Mac 10.12

前言

Mac上自带php,不过由于php版本或不可定制等原因,需要自己安装php。可以通过brew安装php及php相关扩展,简单粗暴。当然也可以通过docker环境使用php。

1.安装php

进入https://www.php.net/, 选择对应版本,下载源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 进入php源码目录
cd <php>/<path>/php-7.2.18
# configure源码,
# --prefix:指定php安装目录,默认安装目录`/usr/local/`
# 通过./configure --help查看可配置参数
# --with-config-file-path: 指定php.ini文件位置,不指定则默认在/usr/local/lib目录下
# --enable-fpm:php7.2源码中包含php-fpm,指定参数后生成php-fpm
# --with-fpm-user=youkong --with-fpm-group=staff:指定用户及组,需要与nginx配置文件中的指定的用户及组相同
# --with-mysqli --with-pdo-mysql: 在编译时可以配置php的一些扩展,主要看项目中需求
./configure --with-config-file-path=/usr/local/etc/php/7.2 --enable-fpm --with-fpm-user=youkong --with-fpm-group=staff --with-mysqli --with-pdo-mysql
# 默认路径下需要sudo权限
sudo make clean
# 默认路径下需要sudo权限
sudo make
# 默认路径下需要sudo权限
sudo make install
# 查看php版本
php -v
# 查看php扩展
php -m

需要注意的是安装完成后,php -v在指定--prefix参数时,展示出来的信息不会是安装的php版本,需要添加环境变量,修改文件vim ~/.bash_profile,修改后需要source ~/.bash_profile生效。php-fpm同理。

2.安装redis扩展

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# git clone
git clone https://github.com/phpredis/phpredis/tree/master
cd phpredis
# 源码中没有configure文件时,需要通过phpize生成
phpize
./configure [--enable-redis-igbinary] [--enable-redis-lzf [--with-liblzf[=DIR]]]
sudo make
# make install 后会指定cp到php extensions目录
# 例如:/usr/local/lib/php/extensions/no-debug-non-zts-20170718/,生成redis.so文件
sudo make install
# 配置php.ini文件,添加redis扩展
vim php.ini
# 添加
# 需要注意的是在添加之前配置好extension_dir路径指定到扩展路径,extension_dir默认路径是/lib/php/pecl路径
# 例如:extension_dir=/usr/local/lib/php/extensions/no-debug-non-zts-20170718
extension=redis.so

3.安装swoole扩展

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# git clone
git clone git@github.com:swoole/swoole-src.git
cd swoole-src
# 源码中没有configure文件时,需要通过phpize生成
phpize
./configure [--enable-redis-igbinary] [--enable-redis-lzf [--with-liblzf[=DIR]]]
sudo make
# make install 后会指定cp到php extensions目录
# 例如:/usr/local/lib/php/extensions/no-debug-non-zts-20170718/,生成swoole.so文件
sudo make install
# 配置php.ini文件,添加swoole扩展
vim php.ini
# 添加
# 需要注意的是在添加之前配置好extension_dir路径指定到扩展路径,extension_dir默认路径是/lib/php/pecl路径
# 例如:extension_dir=/usr/local/lib/php/extensions/no-debug-non-zts-20170718
extension=swoole.so

4.安装gd扩展

在实际项目开发中,需要安装php扩展。例如在登录页面需要生成验证码,需要php的gd扩展。不通与redis扩展,gd是php自带的扩展,可以在php编译安装时通过参数--with-gd指定,这样安装后的php带有gd扩展。如果在php已经完成安装后,安装gd扩展则需要编译gd扩展到php。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# php7.2.18目录下的ext目录是所有php默认扩展,在php编译是可通过`--with`指定,同php一同编译
cd php7.2.18/ext/gd
phpize
./configure --with-png-dir --with-freetype-dir --with-jpeg-dir --with-gd
make
make install
vim php.ini
extension=gd.so

–end–