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();
?>
类似地,可以根据需要安装其他扩展模块.
更多详情,请访问个人博客:https://www.wchonge.com