安装PHP
PHP我们可以去官网下载,www.php.net。
当前的主流版本为5.6或是7.1,绝大部分公司还是用5.x。7是最近几年才出现的,改动较大,老版本对7的兼容性差。
PHP的安装方法和mysql以及apache类似。
首先进入 cd /usr/local/src/,下载PHP的包。
[[email protected] src]# cd /usr/local/src
然后我们下载包
[[email protected] src]wget http://cn2.php.net/distributions/php-5.6.30.tar.gz
然后解压刚才下的包
[[email protected] src]tar zxf php-5.6.30.tar.gz
然后我们进入到php-5.6.30这个目录中,进行编译
[[email protected] src]cd 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
1.prefix=/usr/local/php 是软件的安装目录
2.--with-apxs2=/usr/local/apache2.4/bin/apxs 这是一个apache工具,让我们不用去人工的 干涉他,他会自动的将扩展模块放到apache的目录中,并且在他的配置文件中加上一行,这样在 我们Apache-M时将它加载上,这就是我们为什么要先安装apache再安装PHP的原因。在这里 我们要指定Apache工具的路径。
3.--with-config-file-path=/usr/local/php/etc 指定配置文件的路径
- --with-mysql=/usr/local/mysql 指定mysql的路径
- --with-mysql=/usr/local/mysql
--with-pdo-mysql=/usr/local/mysql
--with-mysqli=/usr/local/mysql/bin/mysql_config
以上三种是mysql的驱动,原因是如果想要PHP和mysql相互通信,那么首先要编译出一个支持他的模块来。老版本用的是--with-mysql=/usr/local/mysql 。而新版本的7用的是
--with-mysqli=/usr/local/mysql/bin/mysql_config
在编译的时候可能会出现一些错误,我们要仔细的去观察,如果提示缺少那些库的话,我们可以去用yum安装。
这里就出现了一个错误,这是提示我们缺少libxml2。
configure: error: xml2-config not found. Please check your libxml2 installation.
然后我们用yum去安装一下。
yum install -y libxml2-devel
安装完后我们继续编译它,然后又出现了一个错误
configure: error: Cannot find OpenSSL‘s <evp.h>
以后会出现很多的错误,我们直接yum安装libxx-devel就可以。
这时出现了一个新的错误
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
出现这个错误时如果我们以前没安装过扩展源的话,我们需要先安装一个扩展源。
yum install -y epel-release
然后再安装libmcrypt-devel
yum install -y libmcrypt-devel
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
Thank you for using PHP.
config.status: creating php5.spec
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands
当我们看到这一项,就说明我们的编译完成了。
然后我们执行下一步
make && make install
然后我们看一下php的目录
[[email protected] php-5.6.30]# ls /usr/local/php
bin etc include lib php
它的核心二进制文件在/usr/local/php/bin
[[email protected] php-5.6.30]# ls /usr/local/php/bin
pear peardev pecl phar phar.phar php php-cgi php-config phpize
php和apache相互连接的是靠libphp5.so完成的。而他所在的目录是
/usr/local/apache2.4/modules/libphp5.so这个就是我们想要的扩展模块
我们也可以列出php所加载的模块有哪些
[[email protected] php-5.6.30]# /usr/local/php/bin/php -m
[PHP Modules]
bz2
Core
ctype
date
dom
ereg
exif
fileinfo
filter
gd
hash
iconv(以下省略)
这些都是静态的
我们也查询一下apache下的模块
[[email protected] php-5.6.30]# /usr/local/apache2.4/bin/httpd -M
php5_module (shared)
发现在最后一行多出了一个php5_module,这说明php是以apaceh的一个模块存在的,而且这个模块非常重要,如果没有,那么我们的apache就不会支持php了。
然后我们在源码包的目录下,复制php.ini-production
先进入到源码包目录,然后再目录中找到 php.ini-production(生产环境中使用),在这个目录下还有一个文件,php.ini-development(开发环境中使用),我们要根据不同的需求去选择他,在这里我们选择php.ini-production
[[email protected] php-5.6.30]# cp php.ini-production /usr/local/php/etc/php.ini
安装php7
下载php7
首先还是先进入到/usr/local/src目录下
然后下载php7
wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2
下载完成后进行解压
tar zxf php-7.1.6.tar.bz2
然后进入到 cd php-7.1.6进行编译
./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所不同的是,这里我们定义的路径为--prefix=/usr/local/php7/etc,配置文件定义为--with-config-file-path=/usr/local/php7/etc ,并且没有了
--with-mysql=/usr/local/mysql,因为在php7中不惜要这个文件了。
这里需要我们注意的是,一台机器是可以安装两个php的,但是在apache调用的时候你要指定好。
然后我们查看一下
[[email protected] php-7.1.6]# ls /usr/local/apache2.4/modules/
libphp7.so libphp5.so
这时在目录下就多出了一个libphp7.so
然后我么查看一下apache加载的模块
[[email protected] php-7.1.6]# /usr/local/apache2.4/bin/apachectl -M
php5_module (shared)
php7_module (shared)
在最后两行,除了php5_module (shared)外,也多出了一个php7_module (shared)这个模块。
如果想要更改apache的调用,只要修改配置文件就可以
[[email protected] php-7.1.6]# vim /usr/local/apache2.4/conf/httpd.conf
然后找到这两个文件
LoadModule php5_module modules/libphp5.so
LoadModule php7_module modules/libphp7.so
我们选择出想要使用的,用#号把另一个注释掉就可以了。
最后在复制文件 cp php.ini-production /usr/local/php7/etc/php.ini即可
原文地址:http://blog.51cto.com/13067688/2097174