1. 程式人生 > >mac系統下切換php版本遇到的問題

mac系統下切換php版本遇到的問題

問題:

mac下自帶php7.1,在/usr/bin下。但是需要用到php5.6。此時通過brew install php56成功安裝。但是,預設的還是php7.1,造成呼叫失敗。

解決方案:

設定預設php版本為php5.6

總結為一句話:在PATH中加入php5.6安裝路徑,並放在PATH的最前面。

心路歷程:

原文連結:點選開啟

需要切換版本原因

有一套老程式碼,沒有使用框架,裡面好多方法php7不支援,只能使用php5.6
  • 1

正常切換流程

brew services php71 stop
brew unlink php71
brew link php56
brew services php56 start
  • 1
  • 2
  • 3
  • 4

遇到的問題

1. brew services php56 start啟動不起來fpm

解決方案:解除安裝重灌
  • 1

2. brew uninstall php56 提示“Uninstalling /usr/local/Cellar/php56/5.6.30_6… (284 files, 15.2MB)Error: Directory not empty @ dir_s_rmdir - /usr/local/Cellar/php56/5.6.30_6

解決方案:
cd /usr/local/Cellar/php56/5.6.30_6
sudo rm -rf *

#重新安裝
brew install php56
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3. 安裝完php5.6後,執行brew link php56,報錯

這個報錯感覺死迴圈了。。。

解決方案:我的目的就是啟動fpm,既然php5.6已經安裝上了,我自己手動啟動fpm就是了
cd /usr/local/opt/[email protected]/sbin
php-fpm -y /usr/local/etc/php/5.6/php-fpm.conf
  • 1
  • 2
  • 3

4. 高高興興測試程式,結果方法還是無法使用,使用phpinfo()檢視,PHP版本7.1.7

解決方案:
剛開始以為是php.ini的問題,使用
php-fpm -y /usr/local/etc/php/5.6/php-fpm.conf -c /usr/local/etc/php/5.6/php.ini
重新啟動php-fpm,發現php版本依然沒變;突然感覺php版本應該與php.ini配置檔案無關,而應該與php執行檔案或者是zend虛擬機器有關。

然後檢視/usr/local/opt/
[email protected]
/bin下有php執行程式,執行./php -v,發現版本為5.6.35,感覺問題應該就解決了 which php查看了系統預設php命令位置:/usr/bin/php; ls -l /usr/bin/php 該檔案不是軟鏈 執行 sudo mv /usr/bin/php /usr/bin/php-7.1.7結果提示mv: rename php to php-7.1.7: Operation not permitted 網上查詢原因:為了防止系統被入侵,mac系統部分資料夾無寫許可權 如果需要修改,需要重啟按住 Command+R,進入恢復模式,開啟Terminal,執行:csrutil disable(恢復的話,同樣方式進入,執行:csrutil enable) 感覺每次切版本都要修改這玩意兒,太變態了,不行。 突然想到,為什麼要改呢,我讓/usr/local/opt/[email protected]/bin路徑,在環境變數中的位置比/usr/bin靠前就好了呀 檢視~/.zshrc(zsh resource檔案,bash對應檔案~/.bashrc),在檔案末尾新增 export PATH="/usr/local/opt/[email protected]/bin:$PATH"(ps:這命令在前面錯誤截圖上有過提示,但是執行了也是一樣繼續出錯誤) 儲存退出後,執行 source ~/.zshrc 然後重啟fpm php-fpm -y /usr/local/etc/php/5.6/php-fpm.conf 檢視php版本,yes~~~問題解決
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

思考(後續繼續查詢原因,困死。。)

1. 為什麼好好的環境就會突然失效呢
2. 為什麼預設PHP版本是7.1.7 而/usr/local/opt/php71/bin下,執行./php -v 版本為7.1.13
3. brew的link,unlink都做了哪些操作,可以使php版本進行切換,而我自己修改卻需要進入恢復模式(難道7.1.7是系統自帶的,因為brew也沒有許可權切換了,導致環境失效?)
4. 突然又發現,切換為brew安裝的php7,頁面上phpinfo中版本為7.1.13,why。。。。
  • 1
  • 2
  • 3
  • 4

臨時php切換方案

php7->php5:
1. brew services php71 stop
2. 修改~/.zshrc,新增環境變數
3. source ~/.zshrc
4. /usr/local/etc/php/5.6/sbin/php-fpm -y /usr/local/etc/php/5.6/php-fpm.conf

php5->php7:
1. 修改~/.zshrc,刪除無用環境變數
2. 新開啟終端
3. brew services php71 start