笔记内容:
11.10/11.11/11.12 安装PHP5
11.13 安装PHP7
笔记日期:2017.9.28
11.10/11.11/11.12 安装PHP5
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
第二步,解包:
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
主要参数介绍:
--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包:
解决办法:
模糊搜索一下,安装需要的包:
安装完之后继续执行检查环境的命令,我这里又出现了一个错误,缺少OpenSSL包:
解决办法:
同样的安装这个包就可以了:
然后再次执行configure时又出现了一个错误,这次是缺少BZip2包:
解决办法,安装BZip2包:
这次是缺少了libjpeg包:
解决办法,安装libjpeg包:
yum install -y libjpeg-devel
缺少png包:
安装png包:
yum install -y libpng-devel
缺少freetype包:
安装freetype包:
yum install -y freetype-devel
缺少mcrypt包:
这一步如果你没有安装epel-release扩展源的话要先安装这个扩展源:
yum install -y epel-release
然后再安装libmcrypt包:
yum install -y libmcrypt-devel
最后出现这样一个提示就是成功了:
然后就是make && make install,编译安装了:
成功编译安装后,就可以ls一下php的目录,可以看到以下几个目录:
核心的二进制文件在bin目录下,可以看到php有36M的大小:
apache下的php模块文件有37M,php就是通过这个libphp5.so文件与apache实现结合在一起的:
查看php里所加载的模块,这些模块都是静态的:
这时候查看Apache的模块信息就可以看到php5的模块了:
Apache就是通过这个模块去调用php的文件的,这个模块非常的重要,这个模块出现问题或者被删除了,Apache就无法调用php的文件了。
现在去查看Apache的配置文件就可以发现多了一行配置内容:
vi /usr/local/apache2.4/conf/httpd.conf
这是apxs2自动添加的模块信息,如果不想使用这个模块加上#号注释掉就可以了。
php的-i 选项可以查看到php的相关信息,编译参数、安装路径等等:
从php的相关信息中可以看到,没有加载任何的配置文件,因为/usr/local/php/etc目录下没有php.ini这个文件:
所以我们需要在/usr/local/src/php-5.6.30目录下,拷贝php5的配置文件到/usr/local/php/etc目录下:
现在再查看php的相关信息就可以看到加载了配置文件:
11.13 安装PHP7
安装PHP7和安装PHP5的操作步骤基本上没什么差别,现在要介绍的如何安装7.1版本的PHP,在这里介绍的还是编译源码包的安装方式:
第一步,先下载源码包到/usr/local/src/目录下:
下载地址:
http://cn2.php.net/distributions/php-7.1.6.tar.bz2
第二步,解包并进入到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
在PHP7的参数里不需要指定--with-mysql参数了。
因为之前安装PHP5的时候已经把需要的包都安装了,所以基本上不会出现少包的情况:
然后就是使用make && make install,编译安装了:
在一台机器上是可以同时存在两个php的,但是要在apache里指定好调用的哪一个php模块,以免发生冲突。
成功安装:
可以看到Apache的模块目录下多了个libphp7.so文件:
修改Apache的配置文件,让它调用php7:
vim /usr/local/apache2.4/conf/httpd.conf
可以看到有php5和php7的配置信息,使用php7的话,就把php5那行注释掉就可以了:
扩展
php中mysql,mysqli,mysqlnd,pdo到底是什么:
http://blog.csdn.net/u013785951/article/details/60876816
查看编译参数:
http://ask.apelearn.com/question/1295