php7安裝及和php5的共存

http://blog.csdn.net/liuxinmingcode/article/details/50319145php

http://www.jb51.net/article/109228.htmhtml

 

centos7 下安裝nginx,mysql都很方便,直接使用 yum install就能夠。mysql

php添加源也可使用yum安裝。但有時會用到雙php,因此手工安裝。nginx

 

LNMP sql

FastCGI 是一個可伸縮地、高速地在HTTP server動態腳本語言間通訊的接口。 centos

HTTP server 是 Apache,nginx等,而動態語言包括php。api

Nginx -> PHP-FastCGI -> PHPbash

Nginx中根據需求配置調用不一樣的PHP-FastCGI的訪問端口,便可實現不一樣版本PHP共存了。網絡

 

1、已有php5session

2、安裝php7

一、下載 php.net (wget...) 解壓 (tar zxvf...)

二、安裝依賴 

yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel 
libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel
gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel

三、配置 

  ./configure 默認配置 可添加修改

  可用 ./configure -h 查看全部選項

  7.3.3 的參見 https://www.cnblogs.com/mitang/p/10625444.html 

3.一、設置不一樣的安裝目錄,共存

  安裝目錄 –prefix=/usr/local/php7 #默認/usr/local/php, 多版本共存,須要修改一下

  配置文件 --with-config-file-path= #相應的變化,默認 /etc/php 能夠改到安裝目錄下etc目錄

3.二、添加模塊 -with-... 便可,重要是開啓fpm -enable-fpm等

3.三、7.1要求openssl版本,須要先升級openssl, (openssl version -a 查看openssl目錄)

   --with-openssl=/usr/local/ssl

update: centos7 + php7.2 須要設置--with--openssl-dir=/usr... 才經過
7.3.3 默認安裝的libzip也出錯,手工從新安裝。(7.3出現多個問題)

./configure --prefix=/alidata/server/php71 --with-config-file-path=/alidata/server/php71/etc --with-config-file-scan-dir=/alidata/server/php71/etc/php.d --enable-zip --enable-inline-optimization --enable-sockets --enable-soap --enable-session --enable-opcache --enable-mysqlnd --enable-fpm --disable-fileinfo --enable-mbstring
--with-mcrypt #7.3.3 configure -h 已經沒有該設置項
--with-mhash --with-mysqli --with-pdo-mysql --with-gd 
--with-jpeg-dir #jpeg修改支持
--with-freetype-dir #freetype 字體支持?
--with-iconv --with-zlib --with-curl
--with-openssl
--with-openssl-dir=/usr/local/ssl

四、編譯 make 便可,可能會報錯:make: *** [sapi/cli/php] error 1 ,使用   

 make ZEND_EXTRA_LIBS='-liconv'

五、安裝

make install 

六、配置文件

6.一、php.ini 從源代碼目錄下 到設定的配置目錄(見3.1 另見補記4)

cp php.ini-production /路徑/php7/etc/php.ini #複製php.ini配置

6.二、php-fpm配置文件修改(安裝目錄下,複製一份)

cp etc/php-fpm.conf.default etc/php-fpm.conf
cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf

6.三、修改監聽端口 #注意多版本不相同

      www.conf  配置 linsten 127.0.0.1:9001 

6.4 修改php.ini

  修改時區 data.timezone = 「Asia/Shanghai」 

 

7 啓動php-fpm

複製源文件目錄下php-fpm啓動腳本,(爲了多版本共存,改下文件名),用腳本啓動服務
cp sapi/fpm/init.d.php-fpm /etc/init.d/php7-fpm chmod 755 /etc/init.d/php-fpm
/etc/init.d/php7-fpm start  #開啓start 關閉stop

 此處啓動方法7.2依然可使用,但推薦直接下面方法:

/usr/local/php7/sbin/php-fpm #啓動

  pkill/killall php-fpm  #關閉

  #/usr/local/php7/sbin/php-fpm -h 查看幫助,-i是信息,-v是版本等

 

八、環境變量 (可選: 將目錄加入路徑,直接可使用命令,不須要在鏈接到 /usr/bin 等目錄

vi /etc/profile

在末尾追加

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

執行命令使得改動當即生效

source /etc/profile

或者使用一步到位腳本:

echo -e '\nexport PATH=/路徑/php7/bin:/路徑/php7/sbin:$PATH\n' >> /etc/profile && source /etc/profile

 

九、Nginx配置FastCGI 訪問 PHP7 (按需配置)

location ~ .*.(php|php5)?$
        {
            fastcgi_pass  127.0.0.1:9001; #注意此端口,決定使用的php版本
            fastcgi_index index.php;
            include fcgi.conf;
        }

 

便可正常訪問。

補記

一、遇到 session 的開啓問題,查網絡是session.save_path 的設置問題,但我php5.5也是默認沒設置

     最後,直接清空 tmp目錄後正常(一、so上有人說tmp滿了(不太可能,二、session文件衝突)

二、php7默認模塊比較少,需本身添加。

    參考說明:http://www.javashuo.com/article/p-ddtptzac-e.html

 三、 init.d/php-fpm腳本 支持的操做:7.2之後使用安裝目錄下的 sbin/php-fpm

  • start,啓動PHP的FastCGI進程。
  • stop,強制終止PHP的FastCGI進程。
  • quit,平滑終止PHP的FastCGI進程。
  • restart, 重啓PHP的FastCGI進程。
  • reload, 從新加載PHP的php.ini。
  • logrotate, 從新啓用log文件。

四、Php.ini位置修改方法以下:

php默認php.ini文件放在/usr/local/lib內,能夠在編譯的時候使用--with-config-file-path參數來修改php.ini的存放位置,例如你可使用--with- config-file-path=/etc把它存放到/etc下面,而後能夠從源碼包中拷貝php.ini到/etc/php.ini。

注意,不要忘記修改時區 data.timezone = 「Asia/Shanghai」 

相關文章
相關標籤/搜索