Centos6.8源码编译安装PHP7

Posted 曾想仗剑走天涯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Centos6.8源码编译安装PHP7相关的知识,希望对你有一定的参考价值。

一、下载源码包

打开php官网http://php.net/点击导航栏的Downloads进入下载页面:http://php.net/downloads.php下载想要安装的版本,这里下载最新版的php-7.1.8 的源码包。

下载环境源码包wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz   可以选择版本,这里下载最新版libiconv-1.15.tar.gz

二、解压源码包并安装环境包

tar zxvf libiconv-1.15.tar.gz 
cd libiconv-1.15 
./configure --prefix=/usr/local/libiconv 
make && make install

三、添加运行php7程序的用户和组

groupadd www
useradd -g www www

四、编译安装php7

tar zxvf php-7.1.8.tar.gz  
cd php-7.1.8
./configure  --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-mcrypt  --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv=/usr/local/libiconv/ --enable-xml --enable-bcmath --enable-inline-optimization --enable-mbregex --enable-fpm --with-openssl --with-xmlrpc --enable-zip --enable-soap --without-pear --enable-session --with-libxml-dir --with-zlib --with-curl --enable-dba --enable-ftp --with-freetype-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --enable-gd-native-ttf --with-gettext --enable-mbstring --enable-pcntl --without-pdo-sqlite --enable-shmop --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-opcache

此时,如果报错的话,一般是缺少环境包所致,根据报错缺少的包进行yum安装

yum -y install gcc g++ libxml2 libxml2-devel openssl openssl-devel curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel pcre pcre-devel libxslt libxslt-devel bzip2 bzip2-devel

实际上这里的配置项比上述还多,可以使用 ./configure --help命令查看所有选项,这里注意在php7中 --with-mysql 原生支持已经不存在了,操作都变成mysqli或者pdo了;以上这些选项在正常的php开发中完全够用了,后期如果需要,可以选择手动开启相应的模块.

然后执行编译安装

make && make install

php的默认安装路径已经指定为  /usr/local/php7 ,其中配置文件的默认安装路径为 /usr/local/php7/etc .

此时在安装目录下没有php.ini文件,需要把解压包路径下拷贝一份到 /usr/local/php7/etc  ,并更名为  php.ini .

cp /usr/local/src/php-7.1.8/php.ini-development /usr/local/php7/etc/php.ini
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
cp /usr/local/src/php-7.1.8/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm7
chmod +x /etc/init.d/php-fpm7
/etc/init.d/php-fpm7 start

此时,基本上是可以启动了。接着就是根据自己的需求修改配置文件

vim /usr/local/php7/etc/php.ini
######避免PHP信息暴露在http头中
expose_php = Off

######避免暴露php调用mysql的错误信息
display_errors = Off

######在关闭display_errors后开启PHP错误日志(路径在php-fpm.conf中配置)
log_errors = On

######设置PHP的扩展库路径
extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20141001/"

######设置PHP的时区
date.timezone = PRC

修改配置文件php-fpm.conf

vim /usr/local/php7/etc/php-fpm.conf

######设置错误日志的路径
error_log = /var/log/php-fpm/error.log

######引入www.conf文件中的配置
include=/usr/local/php7/etc/php-fpm.d/*.conf

www.conf 这是php-fpm 进程服务的扩展配置文件

######设置用户和用户组
user = www
group = www

######根据nginx.conf中的配置fastcgi_pass unix:/dev/shm/php-fpm7.sock;设置PHP监听
; listen = 127.0.0.1:9000   #####不建议使用
listen = /dev/shm/php-fpm7.sock

######使用sock监听需开启
isten.owner = www
listen.group = www
listen.mode = 0660

######开启慢日志
slowlog = /var/log/php-fpm/$pool-slow.log
request_slowlog_timeout = 10s

修改nginx配置文件

location ~ \.php$ {
    #fastcgi_pass   127.0.0.1:9000;

    fastcgi_pass unix:/dev/shm/php-fpm7.sock;

    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
   }

由于php7已经弃用mysql扩展改为mysqli和mysqlpdo,但是有的程序需要mysql支持运行,则可以通过安装mysql扩展来达到这种目的

五、php添加扩展

首先在php网站下载mysql扩展包:http://git.php.net/?p=pecl/database/mysql.git;a=summary 这里下载的是最新版mysql-230a828.tar.gz,上传到服务器

接着进行解压编译安装

tar zxvf mysql-230a828.tar.gz
cd mysql-230a828

#使用phpize进行初始化(phpize在php7安装目录)
/usr/local/php7/bin/phpize

#编译mysql扩展,使用mysql native driver作为mysql链接库   
./configure --with-php-config=/usr/local/php7/bin/php-config --with-mysql=mysqlnd  

make && make install

编译安装成功后会得到一个链接库的路径

Installing shared extensions:     /usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/

编辑php.ini文件

vim /usr/local/php7/etc/php.ini

在最后加入链接库so文件

[mysql]
extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/mysql.so

最后重载php和nginx服务

/etc/init.d/php-fpm7 reload

/etc/init.d/nginx reload

通过访问测试文件index.php可查看安装情况以及已安装扩展模块

<?php
    phpinfo();
?>

类似地,可以根据需要安装其他扩展模块.

以上是关于Centos6.8源码编译安装PHP7的主要内容,如果未能解决你的问题,请参考以下文章

Centos6.8源码编译安装zabbix3.4.1

CentOS6.8编译安装Nginx1.10.2+MySQL5.7.16+PHP7.0.12

centos6.8编译安装mysql

CentOS6.8单独编译安装PHP gd库扩展

CentOS6.8源码安装部署Zabbix3.4.5

CentOS6.8源码安装部署Zabbix3.4.5