安装PHP5和PHP7
5月25日任务
课程内容:
11.10/11.11/11.12 安装PHP5
11.13 安装PHP7
php中mysql,mysqli,mysqlnd,pdo到底是什么http://blog.csdn.net/u013785951/article/details/60876816
查看编译参数 http://ask.apelearn.com/question/1295
11.10/11.11/11.12 安装PHP5
PHP官网www.php.net 当前主流版本为5.6/7.1
操作实例步骤如下:
①[root@jimmylinux-002 ~]# cd /usr/local/src/ 进入到下载软件包目录
②[root@jimmylinux-002 src]# wget http://cn2.php.net/distributions/php-5.6.30.tar.gz 下载软件包
③[root@jimmylinux-002 src]# tar zxf php-5.6.30.tar.gz 解压软件包
④[root@jimmylinux-002 src]# cd php-5.6.30 进入到PHP目录
⑤[root@jimmylinux-002 php-5.6.30]# ./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
编译PHP,prefix指定安装目录,--with-apxs2比较关键的,是Apache的一个工具,可以自动的把扩展模块放到Apache的modules目录下,并且在配置文件里加上一行load modules,自动的配置上,可以让httpd -M的时候把模块加载出来,正常情况下这个模块虽然能够把.so的文件编译出来,但是如果没有去改写配置文件的话,是没有办法加载出来的,这个工具就可以自动的帮你去配置,为什么要把PHP放到最后,原因就在这,首先要安装好Apache,然后在指定工具的地址,否则无法自动安装它的扩展模块,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 指相互关联的函数或驱动,老版本使用mysql,新版本使用mysqli。
编译过程中如果出现报错,可以根据提示排查,如下图。
通过ls /usr/local/ 可以看出目录名称是Apache2,并非Apache2.4 ↑↑↑ 修改正确的名称后再编译,如果出现如下报错,说明缺少库文件。
[root@jimmylinux-002 php-5.6.30]# yum list |grep xml2 通过模糊搜索来安装正确的库文件,一般都是安装-devel的库。
[root@jimmylinux-002 php-5.6.30]# yum install -y libxml2-devel 安装缺少的库
安装好之后再执行命令编译一次
[root@jimmylinux-002 php-5.6.30]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/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
如果出现报错mcrypt,如果之前没有安装过这个epel-release扩展源,需要先安装epel-release,因为安装的mcrypt这个库就在epel-release扩展源里面的。
再执行编译,如果再次出现报错,继续安装缺少的库。
⑥[root@jimmylinux-002 php-5.6.30]# make 执行make命令
⑦[root@jimmylinux-002 php-5.6.30]# make install
[root@jimmylinux-002 php-5.6.30]# ls /usr/local/php/ 查看PHP目录
核心文件在这个目录下面 ls /usr/local/php/bin
/usr/local/apache2/modules/libphp5.so 这个就是我们需要的那个扩展模块,也就是说PHP和Apache结合起来是通过这个.so文件实现的,如果这个时候把PHP目录删除也没有问题。
[root@jimmylinux-002 php-5.6.30]# /usr/local/php/bin/php -m 查看PHP加载的模块,这些模块都是静态的,当然也可以扩展安装其他模块。
[root@jimmylinux-002 php-5.6.30]# /usr/local/apache2/bin/httpd -M 查看Apache加载的模块
在LAMP的架构中,PHP作为Apache的模块存在的,如果Apache想要执行PHP的脚本,必须依赖php5_module,需要这个模块,需要.so的文件,如果把.so文件删除,那么Apache就不支持PHP了,作为一个论坛站点,时时刻刻都在和PHP和mysql打交道,所以说这个模块非常的重要。
[root@jimmylinux-002 php-5.6.30]# ls -l /usr/local/apache2/modules/libphp5.so 这个就是模块文件
[root@jimmylinux-002 php-5.6.30]# vim /usr/local/apache2/conf/httpd.conf 这个就是Apache的配置文件
自动增加了一行loadmodule,其他的都用#注释掉,都不会被加载,这叫随用随取,需要使用的就把#取消掉,如果不想要直接在前面加一个#就可以了。
⑧[root@jimmylinux-002 php-5.6.30]# cp php.ini-production /usr/local/php/etc/php.ini 拷贝生产环境下的PHP配置文件到指定的目录
[root@jimmylinux-002 php-5.6.30]# /usr/local/php/bin/php -i |less 再去查看配置文件就已经有被加载了
11.13 安装PHP7
操作实例步骤如下:
①[root@jimmylinux-002 src]# wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2 下载PHP7软件包
②[root@jimmylinux-002 src]# tar jxfv php-7.1.6.tar.bz2 解压软件包
③[root@jimmylinux-002 src]# cd php-7.1.6 进入到php目录
④[root@jimmylinux-002 php-7.1.6]# ./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache2/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 (执行./configure)
⑤[root@jimmylinux-002 php-7.1.6]# make 执行make命令
⑥[root@jimmylinux-002 php-7.1.6]# make install
在一台机器上面也可以同时安装2个PHP版本,但是Apache调用PHP的时候需要指定好对应的版本。
⑦[root@jimmylinux-002 php-7.1.6]# ls /usr/local/apache2/modules/libphp7.so 查看libphp
[root@jimmylinux-002 php-7.1.6]# du -sh /usr/local/apache2/modules/libphp7.so 查看一下文件大小
[root@jimmylinux-002 php-7.1.6]# /usr/local/php7/bin/php -m 查看php7加载的模块,和php5模块基本一样的。
[root@jimmylinux-002 php-7.1.6]# /usr/local/apache2/bin/apachectl -M 查看Apache加载了几个php
[root@jimmylinux-002 php-7.1.6]# vim /usr/local/apache2/conf/httpd.conf 至于使用哪个,可以根据自己的需求去修改配置文件即可。
有2行,有一个php5,有一个php7,如果不想用5就加#注释掉,如果不想用7也同样加#注释掉就可以了。