安装 PHP
PHP 我们可以去官网下载, www.php.net.
当前的主流版本为 5.6 或是 7.1, 绝大部分公司还是用 5.x.7 是最近几年才出现的, 改动较大, 老版本对 7 的兼容性差.
PHP 的安装方法和 mysql 以及 apache 类似.
首先进入 cd /usr/local/src/, 下载 PHP 的包.
[root@linletao-001 src]# cd /usr/local/src
然后我们下载包
[root@linletao-001 src]wget http://cn2.php.net/distributions/php-5.6.30.tar.gz
然后解压刚才下的包
[root@linletao-001 src]tar zxf php-5.6.30.tar.gz
然后我们进入到 php-5.6.30 这个目录中, 进行编译
[root@linletao-001 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 的目录
[root@linletao-001 php-5.6.30]# ls /usr/local/php
bin etc include lib php
它的核心二进制文件在 / usr/local/php/bin
[root@linletao-001 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 所加载的模块有哪些
- [root@linletao-001 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 下的模块
- [root@linletao-001 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
[root@linletao-001 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 调用的时候你要指定好.
然后我们查看一下
[root@linletao-001 php-7.1.6]# ls /usr/local/apache2.4/modules/
libphp7.so libphp5.so
这时在目录下就多出了一个 libphp7.so
然后我么查看一下 apache 加载的模块
- [root@linletao-001 php-7.1.6]# /usr/local/apache2.4/bin/apachectl -M
- php5_module (shared)
- php7_module (shared)
在最后两行, 除了 php5_module (shared) 外, 也多出了一个 php7_module (shared) 这个模块.
如果想要更改 apache 的调用, 只要修改配置文件就可以
[root@linletao-001 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://www.bubuko.com/infodetail-2559135.html