笔记内容:

  • 11.10/11.11/11.12 安装PHP5

  • 11.13 安装PHP7

笔记日期:2017.9.28


11.10/11.11/11.12 安装PHP5

安装PHP5,安装PHP7_第1张图片

PHP主流版本是5.x/7.x,不过大部分企业都是使用着PHP5.x版本,因为有些程序是基于5.x版本开发的,如果使用7.x版本可能就会出问题,7.x是这两年才出来的,这两个版本区别比较大,7.x的性能要比5.x版本有所提升。

现在先介绍如何安装5.6版本的PHP,在这里介绍的是编译源码包的安装方式,安装PHP之前必须要安装了mysql和apache:

第一步,先下载源码包到/usr/local/src/目录下:

下载地址:

http://cn2.php.net/distributions/php-5.6.30.tar.gz

2309


第二步,解包:

tar -zxvf php-5.6.30.tar.gz


第三步,进入到php-5.6.30目录下,使用configure命令检查编译环境和配置参数:

命令:

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php/etc  --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif

安装PHP5,安装PHP7_第2张图片


主要参数介绍:

--with-apxs2:这是Apache的一个工具,可以自动帮助我们去把扩展的模块放进Apache里,并且可以自动得在配置文件里添加模块的配置信息,所以这就是为什么要先安装Apache的原因。

--with-config-file-path:是用于指定配置文件所在路径,PHP的配置文件名称是:php.ini

--with-mysql:指定mysql的安装路径;--with-pdo-mysql和--with-mysqli:这是指定mysql的驱动或者说是库,因为想要PHP与mysql交互通信得编译出支持它的模块来。没有驱动的话,php是无法访问mysql的,就像你网卡没有安装驱动,你就无法使用网卡上网一样。

后续的参数都是指定php所需要的模块


检查编译环境的过程中,我这里出现了一个错误,缺少libxml2包:

安装PHP5,安装PHP7_第3张图片


解决办法:

模糊搜索一下,安装需要的包:

安装PHP5,安装PHP7_第4张图片

2313


安装完之后继续执行检查环境的命令,我这里又出现了一个错误,缺少OpenSSL包:

安装PHP5,安装PHP7_第5张图片


解决办法:

同样的安装这个包就可以了:

2315


然后再次执行configure时又出现了一个错误,这次是缺少BZip2包:

安装PHP5,安装PHP7_第6张图片


解决办法,安装BZip2包:

2317


这次是缺少了libjpeg包:

安装PHP5,安装PHP7_第7张图片


解决办法,安装libjpeg包:

yum install -y libjpeg-devel


 缺少png包:

安装PHP5,安装PHP7_第8张图片

 

安装png包:

yum install -y libpng-devel


缺少freetype包:

2321


安装freetype包:

yum install -y freetype-devel


缺少mcrypt包:

安装PHP5,安装PHP7_第9张图片


这一步如果你没有安装epel-release扩展源的话要先安装这个扩展源:

yum install -y epel-release


然后再安装libmcrypt包:

yum install -y libmcrypt-devel


最后出现这样一个提示就是成功了:

安装PHP5,安装PHP7_第10张图片


然后就是make && make install,编译安装了:

安装PHP5,安装PHP7_第11张图片

安装PHP5,安装PHP7_第12张图片


成功编译安装后,就可以ls一下php的目录,可以看到以下几个目录:

2326



核心的二进制文件在bin目录下,可以看到php有36M的大小:

2327

apache下的php模块文件有37M,php就是通过这个libphp5.so文件与apache实现结合在一起的:

2328


查看php里所加载的模块,这些模块都是静态的:

安装PHP5,安装PHP7_第13张图片


这时候查看Apache的模块信息就可以看到php5的模块了:

2330


Apache就是通过这个模块去调用php的文件的,这个模块非常的重要,这个模块出现问题或者被删除了,Apache就无法调用php的文件了。


现在去查看Apache的配置文件就可以发现多了一行配置内容:

vi /usr/local/apache2.4/conf/httpd.conf

2331


这是apxs2自动添加的模块信息,如果不想使用这个模块加上#号注释掉就可以了。


php的-i 选项可以查看到php的相关信息,编译参数、安装路径等等:

安装PHP5,安装PHP7_第14张图片

从php的相关信息中可以看到,没有加载任何的配置文件,因为/usr/local/php/etc目录下没有php.ini这个文件:

2333


所以我们需要在/usr/local/src/php-5.6.30目录下,拷贝php5的配置文件到/usr/local/php/etc目录下:

2334


现在再查看php的相关信息就可以看到加载了配置文件:

安装PHP5,安装PHP7_第15张图片






11.13 安装PHP7


安装PHP5,安装PHP7_第16张图片

安装PHP7和安装PHP5的操作步骤基本上没什么差别,现在要介绍的如何安装7.1版本的PHP,在这里介绍的还是编译源码包的安装方式:

第一步,先下载源码包到/usr/local/src/目录下:

下载地址:

http://cn2.php.net/distributions/php-7.1.6.tar.bz2

2337


第二步,解包并进入到php-7.1.6目录下:

tar -jxvf php-7.1.6.tar.bz2

cd php-7.1.6/


第三步,使用configure命令检查编译环境和配置参数:

命令:

./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php7/etc  --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif

安装PHP5,安装PHP7_第17张图片

在PHP7的参数里不需要指定--with-mysql参数了。


因为之前安装PHP5的时候已经把需要的包都安装了,所以基本上不会出现少包的情况:

安装PHP5,安装PHP7_第18张图片


然后就是使用make && make install,编译安装了:


在一台机器上是可以同时存在两个php的,但是要在apache里指定好调用的哪一个php模块,以免发生冲突。


成功安装:

安装PHP5,安装PHP7_第19张图片


可以看到Apache的模块目录下多了个libphp7.so文件:

2341

安装PHP5,安装PHP7_第20张图片

2343


修改Apache的配置文件,让它调用php7:

vim /usr/local/apache2.4/conf/httpd.conf

安装PHP5,安装PHP7_第21张图片

可以看到有php5和php7的配置信息,使用php7的话,就把php5那行注释掉就可以了:

2345



扩展

php中mysql,mysqli,mysqlnd,pdo到底是什么:

http://blog.csdn.net/u013785951/article/details/60876816


查看编译参数:

http://ask.apelearn.com/question/1295