## 安装PHP7.3
参考文档:
[php7源码编译安装](https://www.cnblogs.com/huanhang/p/8250992.html)
[php7源码编译安装](https://blog.csdn.net/xiao_zhui/article/details/72556781)
[详细介绍CentOS7编译安装PHP7的示例代码](http://www.php.cn/php-weizijiaocheng-359129.html)
### 安装基础软件包
系统启动后,我们测试一下网络:
用root账号登录CentOS,输入命令:
:-: ![测试连接](https://box.kancloud.cn/7ba809a422041f5cd0f828021f595331_636x152.jpg)
OK,网络正常,按Ctrl + C结束ping命令。
#### 开启SSH登录
~~~
修改/etc/ssh/sshd-config文件.
将其中的PermitRootLogin no修改为yes
PubkeyAuthentication yes修改为no
AuthorizedKeysFile .ssh/authorized_keys前面加上#屏蔽掉,
PasswordAuthentication no修改为yes就可以了。
~~~
下面开始安装需要的软件。
#### 让yum跑的快一点
~~~
[root@localhost ~]# yum makecache fast
~~~
#### 安装net-tools
~~~
[root@localhost ~]# yum -y install net-tools
~~~
安装完成后,执行
~~~
[root@localhost ~]# ifconfig
~~~
OK,可以看到网络配置情况了
#### 安装Vim和wget
~~~
[root@localhost ~]# yum -y install vim
[root@localhost ~]# yum -y install wget
~~~
这个时候我们可以关机,做一个给系统拍一个快照
~~~
[root@localhost ~]# shutdown now
~~~
关机后,选择VMWare Workstations的菜单“虚拟机”-->“快照”-->“拍摄快照”,起个名字保存即可。如果以后我们想有一个全新的环境,可以从这个快照启动。
然后重新启动虚拟机,用root账号登录,我们开始安装PHP 7.3
### 安装PHP
我们选择从Github下载PHP源码:
PHP项目地址是`https://github.com/php/php-src`
我们要先安装 Git客户端
~~~
[root@localhost ~]# yum -y install git
~~~
创建一个目录保存我们的源码包
~~~
[root@localhost ~]# mkdir packages
[root@localhost ~]# cd packages
~~~
通过Git下载PHP源码
~~~
[root@localhost packages]# git clone https://github.com/php/php-src.git
~~~
这个包比较大,要下载一阵子。出去抽支烟回来,OK,下载完了。
稍等,我拍个快照先……
好了,拍完了,我们要编译PHP了。编译PHP需要依赖挺多东西的,我们先安装起来:
~~~
[root@localhost packages]# yum -y install libxml2 libxml2-devel openssl openssl-devel curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel pcre pcre-devel libxslt libxslt-devel bzip2 bzip2-devel autoconf automake libtool bison
[root@localhost packages]# wget https://nih.at/libzip/libzip-1.2.0.tar.gz
[root@localhost packages]# tar zxf libzip-1.2.0.tar.gz
[root@localhost packages]# cd libzip-1.2.0
[root@localhost libzip-1.2.0]# ./configure
[root@localhost libzip-1.2.0]# make
[root@localhost libzip-1.2.0]# make install
[root@localhost libzip-1.2.0]# echo '/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64'>>/etc/ld.so.conf&&ldconfig -v
[root@localhost libzip-1.2.0]# cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h
~~~
OK,万事俱备了,开始编译PHP
~~~
[root@localhost libzip-1.2.0]# cd ../php-src
[root@localhost php-src]#
~~~
看一看PHP源码里的版本分支
:-: ![php_git版本库](https://box.kancloud.cn/3bd76d9ba6d6f365b9d5375473184ed2_327x681.jpg)
好吧,好多,你想要哪个?我想要PHP-7.3,我们检出它
~~~
[root@localhost php-src]# git checkout PHP-7.3
~~~
开始编译吧
~~~
[root@localhost php-src]# ./buildconf
[root@localhost php-src]# ./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip
[root@localhost php-src]# make
~~~
很久很久以后……终于make完了,如果你看到最后输出的信息是:
~~~
Build complete.
Dont't forget to run 'make test'.
~~~
恭喜你,一次成功了!接下来我们安装编译好的PHP
~~~
[root@localhost php-src]# make install
~~~
PHP默认安装在`/usr/local/php`下。如果要改变这个安装路径。需要修改编译选项中的`--prefix=/usr/local/php`。
更多的编译选项可以使用命令`./configure --help`查看
另外注意一个地方就是php.ini配置文件的位置可以在编译前配置参数中设置,编译参数可以写成:`--with-config-file-path=/usr/local/php` ,这样的话php就会去指定的目录下读取php.ini配置文件,如果不加这个参数默认位置就是php安装目录下的lib目录,具体也可以在phpinfo()输出界面查看,如果php.ini放到其他位置,php读取不到,那么所有的配置修改后都是不生效的,这点要注意。
接下来把php.ini拷贝到指定位置。我们使用PHP提供的php.ini-development(在php-src目录下)作为开发服务器的php.ini文件:
~~~
[root@localhost php-src]# cp php.ini-development /usr/local/php/lib/php.ini
[root@localhost php-src]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[root@localhost php-src]# ln -s /usr/local/php/sbin/php-fpm /usr/local/bin
~~~
然后设置php.ini,使用: `vim` 打开php配置文件` /usr/local/php/lib/php.ini`,找到cgi.fix_pathinfo配置项,这一项默认被注释并且值为1,根据官方文档的说明,这里为了当文件不存在时,阻止Nginx将请求发送到后端的PHP-FPM模块,从而避免恶意脚本注入的攻击,所以此项应该去掉注释并设置为0。
现在需要配置PHP运行使用的账号
~~~
[root@localhost php-src]# groupadd www
[root@localhost php-src]# useradd -g www www
~~~
查看php-fpm.conf文件配置是否正确:
~~~
[root@localhost php-src]# vim /usr/local/php/etc/php-fpm.conf
~~~
文件最后一行是要包含php-fpm.d目录下的所有.conf文件,查看路径配置是否正确。如果编译时添加--prefix选项,这里的路径会配置为正确的路径,否则会是一个NONE字样,修改为正确路径即可。
:-: ![错误的路径](https://box.kancloud.cn/10a50742640137d0d5e13bfa5de06c57_437x163.png)
把上图中错误的路径修改为下图正确的路径即可
![修改为正确的路径](https://box.kancloud.cn/c974b74c4a53fae150dd7d6b48ce6fe4_431x123.png)
默认情况下php-fpm.d下有一个名为`www.conf.defalut`的配置用户的文件,复制一个新文件并且打开:
~~~
[root@localhost php-src]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
[root@localhost php-src]# vim /usr/local/php/etc/php-fpm.d/www.conf
~~~
找到文件中的下面部分:
:-: ![](https://box.kancloud.cn/2daace24b1401e84eff91b14c954e4c0_670x92.jpg)
修改为我们新增的用户www和组www:
:-: ![](https://box.kancloud.cn/7298e807547ffabdb60d0cbaca153891_651x99.jpg)
接下来我们配置php-fpm服务。
用`vim`创建一个文件 `/etc/init.d/php-fpm`
~~~
[root@localhost php-src]# vim /etc/init.d/php-fpm
~~~
粘贴文件内容如下:
~~~
#!/bin/sh
# chkconfig: 2345 15 95
# description: PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation \
# with some additional features useful for sites of any size, especially busier sites.
# DateTime: 2016-09-20
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
phpfpm="/usr/local/php/sbin/php-fpm"
prog=$(basename ${phpfpm})
lockfile=/var/lock/subsys/phpfpm
start() {
[ -x ${phpfpm} ] || exit 5
echo -n $"Starting $prog: "
daemon ${phpfpm}
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc ${phpfpm} -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
${phpfpm} -t
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
status)
rh_status
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|configtest}"
exit 2
esac
~~~
注意修改`phpfpm="/usr/local/php/sbin/php-fpm"`为你的真实路径。
保存退出。
把php-fpm添加到服务里:
~~~
[root@localhost php-src]# chkconfig --add php-fpm
[root@localhost php-src]# chkconfig php-fpm on
[root@localhost php-src]# chmod a+wrx /etc/init.d/php-fpm
[root@localhost php-src]# service php-fpm start
[root@localhost php-src]# service php-fpm status
~~~
现在php-fpm服务做好了,会和系统一起启动。
接下来我们把php路径添加到环境变量里。编辑`/etc/profile`文件:
~~~
[root@localhost php-src]# vim /etc/profile
~~~
在文件末尾加入如下几行:
~~~
PHP_HOME=/usr/local/php/bin
PATH=$PATH:$PHP_HOME
export PHP_HOME PATH
~~~
然后加载新的配置:
~~~
[root@localhost php-src]# source /etc/profile
~~~
现在可以在任何路径下执行php命令了。看看成果吧:
命令行执行:
:-: ![](https://box.kancloud.cn/fcae610f0bdf4792fa90bc1606a24706_534x70.jpg)
php-fpm服务
:-: ![](https://box.kancloud.cn/24425ebf0c950e673459ab92e0c41d03_642x235.jpg)
PHP 7.3编译安装结束
现在,我们关闭虚拟机,拍摄快照,继续下面的安装