Yii2 Day 8 配置多版本PHP

原由

Yii2對最低要求PHP5.4,可是目前不少空間或者主機,PHP的版本還停留在5.3及如下。這個時候就面臨兩個選擇:php

  1. 升級PHP版本
  2. 再安裝一個高版本PHP

若是已經有站點在這個服務器上運行的話,貿然升級PHP版本,極可能讓那些使用了過期的函數,不規範用法的PHP程序報一堆警告或者錯誤,那就無可挽回啦。安全起見,再安裝一個高版本PHP比較保守些。那麼若是讓Nginx或者Apchce使用不一樣版本的PHP呢?那就是PHP-FPM.mysql

PHP-FPM##

FastCGI Process Manager, 即FastCGI進程管理器。使用PHP-FPM模式的配置PHP站點,一個請求的流程是這樣的(以Nginx+PHP-FPM爲例):sql

  1. PHP-FPM啓動監聽,一般默認是9000,因此不少Nginx配置會有一條 Fastcgi-pass 127.0.0.1:9000
  2. 瀏覽器發送請到Nginx應用服務器
  3. Nginx把PHP請求,轉發給PHP的FastCGI進程,
  4. FastCGI進程處理完畢PHP腳本後,返回給應用服務器,服務器再返回給瀏覽器。

所以,讓不一樣的站點使用不一樣的PHP版本,就能夠經過將請求轉發給不一樣的PHP-FPM進程。shell

編譯PHP

下載相應版本的PHP代碼,編譯安裝到不一樣的路徑下,把須要的擴展儘可能都加進去:瀏覽器

<!-- lang: shell -->
./configure --prefix=/usr/local/php-5.5 --with-config-file-path=/usr/local/php-5.5/etc --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-bz2 --with-curl=/usr/bin --enable-ftp --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr/local  --enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --with-mcrypt=/usr/bin --enable-zip --enable-soap --enable-mbstring  --with-gd --with-openssl --enable-pcntl --with-xmlrpc --enable-opcache

因爲Yii2使用到了mcrypt,因此加了--with-mcrypt,可是若是沒有安裝過,configure的時候會報找不到 mcrypt.h之類的錯誤,說明系統確實這個庫,須要先安裝,使用yum install libmcrypt mcrypt mhash. 再次configure就能夠不報錯了。安全

配置PHP-FPM

安裝完畢後,打開 php-fpm.conf, 修改監聽的端口,或者修改sock文件名稱,防止和舊版本的PHP-FPM進程衝突。而後啓動這個php-fpm進程。服務器

修改站點配置

主要就是修改FASTCGI_PASS, 指向相應的監聽端口或者sock文件。dom

相關文章
相關標籤/搜索