1. 程式人生 > >Centos6.8源碼編譯安裝PHP7

Centos6.8源碼編譯安裝PHP7

pan fas ring pdo sockets inline 沒有 php的擴展 so文件

一、下載源碼包

打開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

二、解壓源碼包並安裝環境包

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

三、添加運行php7程序的用戶和組

1 groupadd www
2 useradd -g www www

四、編譯安裝php7

1 tar zxvf php-7.1.8.tar.gz  
2 cd php-7.1.8
3 ./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開發中完全夠用了,後期如果需要,可以選擇手動開啟相應的模塊.

然後執行編譯安裝

1 make
2 make install

php的默認安裝路徑已經指定為 /usr/local/php7 ,其中配置文件的默認安裝路徑為 /usr/local/php7/etc .

此時在安裝目錄下沒有php.ini文件,需要把解壓包路徑下拷貝一份到 /usr/local/php7/etc ,並更名為 php.init .

1 cp /usr/local/src/php-7.1.8/php.ini-development /usr/local/php7/etc/php.ini
1 cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
1 cp /usr/local/src/php-7.1.8/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm7
2 chmod +x /etc/init.d/php-fpm7
3 /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文件

1 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可查看安裝情況以及已安裝擴展模塊

1 <?php
2     phpinfo();
3 ?>

類似地,可以根據需要安裝其他擴展模塊.

Centos6.8源碼編譯安裝PHP7