CentOS 源码编译安装PHP 7.0 (fastcgi)

PHP 7 正式发布,PHP 7.0.0 包含最新版本的 Zend Engine,包括以下特性:

  • 提升性能:PHP 7 速度是 PHP 5.6 的两倍
  • 显著降低内存使用
  • 抽象语法树
  • 支持 64 位
  • 许多重大错误可以进行异常处理
  • 移除了旧的和不支持的 SAPIs 和扩展
  • 安全的随机数生成器
  • null 合并操作符(??)
  • 结合比较运算符 (<=>)
  • 标量类型声明
  • 匿名类

安装约定

php源码路径:/usr/local/src
php安装路径:/usr/local/php
php配置文件路径:/usr/local/php/etc/php.ini
php-fpm配置文件路径:/usr/local/php/etc/php-fpm.conf

下载源代码包

在官网如下地址下载最新版

http://www.php.net/downloads.php

# cd /usr/local/src/
# wget http://cn2.php.net/distributions/php-7.0.x.tar.gz

创建www用户和组

# groupadd www
# useradd -g www -c "www user" -d /var/lib/www -s /sbin/nologin www

安装gcc、make等

# yum -y install gcc gcc-c++ make autoconf automake

安装编译php所需的库

# yum -y install zlib-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel

安装php

# tar zxvf php-7.0.x.tar.gz
# cd php-7.0.x
# ./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-iconv-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-fpm \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-mbstring \
--with-mcrypt \
--enable-ftp \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-gettext \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd
# make
# make install

拷贝配置文件

# cp php.ini-production /usr/local/php/etc/php.ini

编辑php.ini,找到date.timezone,将前面的注释去掉,改为date.timezone = PRC,否则php -i | grep configure查看编译参数报警告如下

PHP Warning: Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in Unknown on line 0

隐藏php版本信息

# sed -i 's/expose_php = On/expose_php = Off/' /usr/local/php/etc/php.ini

拷贝启动脚本

# mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# chmod +x /etc/init.d/php-fpm

设置php-fpm开机启动

# chkconfig php-fpm on

设置php环境变量

# vim /etc/profile

在其文件末尾添加如下变量

export PATH=$PATH:/usr/local/php/bin
export PATH=$PATH:/usr/local/php/sbin

或者用以下命令添加

# sed -i '/unset -f pathmunge/a\export PATH=$PATH:/usr/local/php/bin' /etc/profile
# sed -i '/unset -f pathmunge/a\export PATH=$PATH:/usr/local/php/sbin' /etc/profile

运行如下命令使环境变量生效

# source /etc/profile