先確認你安裝的方式
套件安裝,利用chroot
編譯安裝,裝到不同目錄
修改php-fpm開啟不同的tcp port或socket
nginx指向不同php版本的php-fpm
修改php-fpm開啟不同的tcp port或socket nginx指向不同php版本的php-fpm
請問一下這個有詳細的教學嗎??我超不會這段
請問您使用哪一種安裝方式。
用法:
先修改
php-fpm.conf
listen 就可以指定不同的port 或 socket
nginx.conf
proxy_pass 指向不同的上述 listen
有nginx.conf的設定法嗎??您也是freebsd嗎??我發現linux跟bsd不太一樣 而且兩個php版本目前不能同時啟動
linux跟bsd的nginx及php設定是相同的.
nginx只有導向的功能,問題不在於nginx,在於不能同時啟動兩個php的版本,首先你要確定兩個版本的php,兩個版本的php-fpm能正常啟動。
你能嘗試編譯安裝php嗎?
下載php source
./configure help
可以看參數
注意目錄設置正確
例如
--prefix=
--with-config-file-scan-dir=
假設我安裝為
/php56
/php70
分別修改/php50及/php70 的php-fpm.conf
假設使用tcp的php-fpm listen
#php56 php-fpm.conf
listen = 127.0.0.1:55601
#php70 php-fpm.conf
listen = 127.0.0.1:57001
嘗試同時啟動
/php56/bin/php-fpm -D
/php7-/bin/php-fpm -D
#確認啟動成功
netstat -tln | grep [55601|57001]
#nginx 目錄執行指定
web_dir_1目錄都是以php56執行
web_dir_2目錄都是以php70執行
location location ~/web_dir1/* \.php$ {
fastcgi_pass 127.0.0.1:55601;
....
}
location location ~/web_dir1/* \.php$ {
fastcgi_pass 127.0.0.1:57001;
....
}
修正最後 一段code
location location ~/web_dir_1/* \.php$ {
fastcgi_pass 127.0.0.1:55601;
....
}
location location ~/web_dir_2/* \.php$ {
fastcgi_pass 127.0.0.1:57001;
....
}
我php5.3是預設安裝 沒指定目錄 php5.6是裝在 /usr/local/php56 下面 這樣會有問題嗎??另外 /etc/rc.conf 要預設兩個同時啟動要怎設呢??
我是用port安裝的
我php5.3 一個是開listen:127.0.0.1:9000 另一個php5.6是 listen:127.0.0.1:9001 基本上不能同時啟動 我甚至http 的port
都錯開也不能同時啟動
/php56/bin/php-fpm -D 打這個指令確定可以雙重啟動了 感謝 但開機無法自動啟動要怎解決呢???
他上面說的路徑好像不太對 我看要改的路徑應該在 /etc/rc.d/local
但我要填什麼進去呢?? /usr/local/php56/sbin/php-fpm -D 這樣對嗎?? /usr/local/php56/etc/rc.d/php-fpm restart 直接啟動php56的話會引起原來版本php失效
不好意思我看錯了 我建一個檔 /etc/rc.local
再加入/usr/local/php56/sbin/php-fpm -D 這樣對嗎??
是的,並且讓 /etc/rc.local 可以執行
chmod a+x /etc/rc.local
嗯我試過了 真的可以 感謝 不過我發現我如果開一個新的bsd9.3版把兩個各放在/usr/local/php53 /usr/local/php56 會裝不起來
而且之前新裝的php56如果crontab設自動重啟會引起php5.3版失效
有辦法讓這兩位大哥能和平相處嗎???
有一點難猜測你怎麼做的
看您的描述 “自動重啟”
我猜測您是用系統的指令自動重啟,必須寫系統可以接受的指令稿
例如:service php-fpm restart
參考您之前設定服務啟動的那一篇文章
拷貝php-fpm的文件
cp php-fpm php-fpm53
cp php-fpm php-fpm56
修改裡面指向啟動的指令為
/usr/local/php53/....
/usr/local/php56/....
service php-fpm53 restart
service php-fpm56 restart
服務的設定,參考11.2及11.4
https://www.freebsd.org/doc/zh_TW/books/handbook/config-tuning.html
如果這樣不放心
就考慮建立chroot或docker,讓php各自獨立區隔出兩個php版本
想到另外一個可能
php-fpm的pid可能是一樣的
你看看是否為一樣,如果一樣要修改一下
系統啟動時,以為他是啟動的,就關掉了另外一個
我可能要暫時放棄這個想法了 我用/usr/local/php56/etc/rc.d/php-fpm stop 其實等到/usr/local/etc/rc.d/php-fpm restart php5.6一樣會出現關不掉
而且等我先安裝php5.6 再安裝php5.3 到/usr/local/php53 也不讓我裝 會出現/!\ WARNING /!\
The variable PHP_DEFAULT is set and it should only be defined through DEFAULT_VERSIONS+=php=53 in /etc/make.conf
This behaviour has never been supported and will be removed on 2017-01-31
很感謝前輩大哥的回答