CentOS 7 编译安装PHP 5.6

 

来源:Linux社区  作者:sbman

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-08/146095.htm

 

在CentOS 7 下编译安装PHP 5.6过程记录。

1.下载PHP安装包

wget http://php.net/distributions/php-5.6.31.tar.gz

默认情况下Nginx和PHP他俩之间是一点感觉没有的。Apache+PHP编译后生成的是模块文件,而Nginx+PHP需要PHP生成可执行文件才可以,所以要利用fastcgi技术来实现Nginx与PHP的整合,这个只要我们安装时启用 FastCGI即可。此次我们安装PHP不仅使用了FastCGI,而且还使用了PHP-FPM这么一个东东,PHP-FPM说白了是一个管理 FastCGI的一个管理器,它作为PHP的插件存在,在安装PHP时要想使用PHP-FPM就需要把PHP-FPM以补丁的形式安装到PHP中,而且 PHP要与PHP-FPM版本一致,这是必须的,切记!

2.解压安装

tar -zxvf php-5.6.31.tar.gz

cd php-5.6.3

./configure  --prefix=/usr/local/php  --with-config-file-path=/usr/local/php/etc  --with-png-dir=/usr/local/libpng  --with-jpeg-dir=/usr/local/jpeg  --with-freetype-dir=/usr/local/freetype  --with-zlib-dir=/usr/local/zlib  --with-mcrypt=/usr/local/libmcrypt  --with-libxml-dir=/usr/local/libxml2/  --with-iconv-dir=/usr/local/libiconv  --enable-libxml  --enable-xml  --enable-bcmath  --enable-shmop  --enable-sysvsem  --enable-inline-optimization  --enable-opcache  --enable-mbregex  --enable-fpm  --enable-mbstring=all  --enable-gd-native-ttf  --with-openssl  --enable-pcntl  --enable-sockets  --with-xmlrpc  --enable-zip  --enable-soap  --without-pear  --with-gettext  --enable-session  --with-curl  --enable-ctype  --enable-shared  --with-gd

在安装过程中报了下面的错误:

CentOS 7 编译安装PHP 5.6_第1张图片

原来是没安装插件 gcc。

继续安装:

yum install gcc

 插件安装完毕后,我们继续安装PHP

CentOS 7 编译安装PHP 5.6_第2张图片

最后又报以下错误:

CentOS 7 编译安装PHP 5.6_第3张图片

没安装libxml2插件,因为我的是新装的centos系统,所以里面会缺失各种依赖包,继续安装版libxml2插件:

yum install libxml2

 提示:

CentOS 7 编译安装PHP 5.6_第4张图片

libxml2已存在,可能libxml2-dev未安装,我们安装libxml2-devel

yum install libxml2-devel

 安装好后我们继续安装PHP,又提示:

CentOS 7 编译安装PHP 5.6_第5张图片

 

我们安装openssl插件

yum install openssl openssl-devel

 安装完后我们继续执行PHP的安装,还报确实插件liburl

安装liburl

yum -y install curl-devel

 安装好后继续执行PHP的安装,报GD库未安装,我们继续安装GD库

CentOS 7 编译安装PHP 5.6_第6张图片

yum install libjpeg libpng freetype libjpeg-devel libpng-devel freetype-devel -y

 继续安装PHP报缺失插件libmcrypt

CentOS 7 编译安装PHP 5.6_第7张图片

centos尝试用yum安装libmcrypt:

#yum install libmcrypt libmcrypt-devel mcrypt mhash
Setting up Install Process
No package php-mcrypt available.
Error: Nothing to do

我们会看到centos yum从仓库中根本找不到这几个包。但我不想使用源码编译就想使用yum安装,怎么办?
yum  install epel-release  //扩展包更新包
  yum  update //更新yum源

安装完epel-release ,yum  update 可能会报错如下:

Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

解决办法是编辑/etc/yum.repos.d/epel.repo,把基础的恢复,镜像的地址注释掉

#baseurl
mirrorlist

改成

baseurl
#mirrorlist

只改下面这一项就ok了。

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearc
h
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

 yum install libmcrypt libmcrypt-devel mcrypt mhash  

 

yum安装libmcrypt不成功,可以采用编译安装:#使用wget可以通过以下路径下载 

wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/attic/libmcrypt/libmcrypt-2.5.7.tar.gz 

#解压 

tar -zxvf libmcrypt-2.5.7.tar.gz     

#进入目录 

cd libmcrypt-2.5.7     

#编译(默认安装到/usr/local/lib/) 

./configure --prefix=/usr/local/libmcrypt     

#执行安装 

make && make install 

 安装完后继续执行PHP的安装,这回终于提示成功:

CentOS 7 编译安装PHP 5.6_第8张图片

接下来就是编译、安装PHP

  1. 编译php源码

        编译源码只需要执行命令: make

    CentOS 7 编译安装PHP 5.6_第9张图片

    CentOS 7 编译安装PHP 5.6_第10张图片

  2. 安装php源码

        安装源码只需要执行命令: make install

    CentOS 7 编译安装PHP 5.6_第11张图片

    CentOS 7 编译安装PHP 5.6_第12张图片

  3. 复制php配置到安装php安装目录

        1. 复制php.ini命令: cp php.ini-development /usr/local/php/lib/php.ini

        2. 复制php-fmp配置命令: cp ./sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf

        3. 查看php是否安装成功: /usr/local/php/bin/php --version

        显示php版本就安装成功了

     

    php5.6.31就编译安装完了

    CentOS 7 编译安装PHP 5.6_第13张图片

  4. fpm路径:  /usr/local/php/sbin/php-fpm

    fpc配置路径:  /usr/local/php/etc/php-fpm.conf

    php.ini路径:  /usr/local/php/lib/php.ini

  5. php常用命令

        1. 查看php版本: /usr/local/php/bin/php -v

        2. 查看phpinfo: /usr/local/php/bin/php -i

        3. 查看php编译模块: /usr/local/php/bin/php -m

        4. 查看php.ini配置文件路径和目录: /usr/local/php/bin/php --ini

  6. php-fpm常用命令

        查看php-fpm占用端口号: ps -ef | grep php-fpm

        1. 配置php-fmp: vi /usr/local/php/etc/php-fpm.conf

    修改

    user = nobody

    group = nobody

    改为

    user = www

    group = www

     

        如果www用户不存在,那么先添加www用户

        groupadd www # 新增用户组

        useradd -g www www # 新增用户并设置用户组

     

     

        2. 使用信号管理php-fpm

        INT, TERM 立刻终止

        QUIT 平滑终止

        USR1 重新打开日志文件

        USR2 平滑重载所有worker进程并重新载入配置和二进制模块

    示例:

        1. 启动服务: 

            /usr/local/php/sbin/php-fpm

            指定配置路径启动服务

            /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf

     

        2. 平滑重启服务(会重启加载配置): 

            kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

        3. 重新打开日志文件: 

            kill -USR1 `cat /usr/local/php/var/run/php-fpm.pid`

        4. 停止服务: 

            kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

        5. 平滑停止服务: 

            kill -QUIT `cat /usr/local/php/var/run/php-fpm.pid`

             6. 测试php-fpm配置

    /usr/local/php/sbin/php-fpm -t

    /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini -y /usr/local/php/etc/php-fpm.conf -t

 

php5.6.31就编译安装完了

 

3.总结

编译安装个PHP不容易啊,总结一下:

安装PHP必须提前安装的依赖包有:gcc、libxml2、openssl、curl、libmcrypt,但每个人的环境不一样,可能还会有不同的插件缺失,大家可根据提示去逐一安装。

你可能感兴趣的:(centos,centos,php,yum)