多版本php共存 linux,linux下多版本php共存的原理、方法
服務(wù)器當(dāng)前PHP版本5.4,新項(xiàng)目中使用了Laravel,PHP版本最低要求5.6。希望保持現(xiàn)有應(yīng)用同時(shí)使用PHP5.6.*。也就是說需要兩個(gè)版本的PHP同時(shí)存在,供nginx根據(jù)需要調(diào)用不同版本。
一、原理:
Nginx是通過PHP-FastCGI與PHP交互的。而PHP-FastCGI運(yùn)行后會(huì)通過文件、或本地端口兩種方式進(jìn)行監(jiān)聽,在Nginx中配置相應(yīng)的FastCGI監(jiān)聽端口或文件即實(shí)現(xiàn)Nginx請求對(duì)PHP的解釋。
既然PHP-FastCGI是監(jiān)聽端口和文件的,那就可以讓不同版本的PHP-FastCGI同時(shí)運(yùn)行,監(jiān)聽不同的端口或文件,Nginx中根據(jù)需求配置調(diào)用不同的PHP-FastCGI端口或文件,即可實(shí)現(xiàn)不同版本PHP共存了。
二、方法:
原理很簡單,操作方法其實(shí)也很簡單。
1.php-fpm監(jiān)聽不同端口,如9000(默認(rèn))、9001
2.Nginx配置調(diào)用端口,(9000,9001)
第一步,PHP編譯安裝的話,php-fpm配置文件路徑一般是
/PHP_INSTALLED_PATH/etc/php-fpm.conf
(php剛編譯安裝完時(shí)配置文件名為php-fpm.default.conf,直接改名為php-fpm.conf即可),當(dāng)然這個(gè)路徑是編譯時(shí)配置的,上面這個(gè)路徑算是最佳實(shí)踐吧。
下面這里即是配置監(jiān)聽端口的地方,此處端口9000改為9001,其他配置參考舊版本php-fpm.conf的配置即可。listen = 127.0.0.1:9000#fpm監(jiān)聽端口,即nginx中php處理的地址,一般默認(rèn)值即可。可用格式為: 'ip:port', 'port', '/path/to/unix/socket'. 每個(gè)進(jìn)程池都需要設(shè)置.
注意,如果是要安裝5.2及以前版本需要打php-fpm補(bǔ)丁,下載fpm補(bǔ)丁包并執(zhí)行命令gzip-cdphp-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1
第二步,修改Nginx vhost.conf配置文件,添加如下部分:
1 server {
2 ? ? listen ? ? ? 80;
3 ?? ?server_name ?a.b.com;
4 ?? ?index index.html index.htm index.php;
5 ? ? root /MY_PROJECT_PATH; 6 ?7 ? ? location / {
8 ? ? ? ? ? ?try_files $uri $uri/ /index.php?$query_string;
9 ?? ?}
10 ? ? location ~ .*\.(php|php5)?$ ? ? ? ? {
11 ? ? ? ? #fastcgi_pass ?unix:/tmp/php-cgi.sock;
12 ? ? ? ? fastcgi_pass ?127.0.0.1:9001;
13 ?? ? ? ?fastcgi_index index.php;
14 ?? ? ? ?include fastcgi.conf;
15 ?? ?}16 }
上面9001部分即是將所有.php和.php5文件請求都轉(zhuǎn)發(fā)到9001端口。
第三步、啟動(dòng)新版php-fpm,重啟nginx。
php-fpm支持的操作:start,啟動(dòng)PHP的FastCGI進(jìn)程。
stop,強(qiáng)制終止PHP的FastCGI進(jìn)程。
quit,平滑終止PHP的FastCGI進(jìn)程。
restart, 重啟PHP的FastCGI進(jìn)程。
reload, 重新加載PHP的php.ini。
logrotate, 重新啟用log文件。
常見錯(cuò)誤1:php-fpm start啟動(dòng)后通過瀏覽器訪問項(xiàng)目出現(xiàn)502BAD GATEWAY,查看netstat -ano發(fā)現(xiàn)并沒有監(jiān)聽到9001端口的程序,應(yīng)該是php-fpm啟動(dòng)出錯(cuò)。
查資料發(fā)現(xiàn)可以通過指定配置文件來啟動(dòng)php-fpm,命令如下:#測試php-fpm配置/usr/local/php/sbin/php-fpm -t/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t
#啟動(dòng)php-fpm/usr/local/php/sbin/php-fpm/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf
指定配置文件后啟動(dòng)正常,正確監(jiān)聽9001端口
常見錯(cuò)誤2:ERROR: [pool?www]?cannot?get?uid?for?user?'@php_fpm@
ERROR:?FPM?initialization?failed
解決辦法是修改php-fpm.conf中user和group部分為系統(tǒng)用戶的名字,如root或www(應(yīng)用這個(gè),root千萬別用,權(quán)限太大)
通過以上三步便實(shí)現(xiàn)了Linux上多版本PHP共存,不過這個(gè)前提是服務(wù)器上已經(jīng)安裝了兩個(gè)版本的PHP。
原文出處:http://www.cnblogs.com/ningskyer/articles/5639276.html
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的多版本php共存 linux,linux下多版本php共存的原理、方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 选中当前,Java开发网 -
- 下一篇: r oracle linux,Linux