Homebrew學習及mac下升級php7問題
最近在thinkphp官網看到tp5更新,據說搭載php7後效能提升一大截。。為了學習一下,準備更新一下php。
我使用的是mac,原本的php版本是mac自帶的,版本是5.5的。然後開始升級。
查閱資料,基本都是推薦Homebrew來安裝。那Homebrew是什麼的東東?下面來學習一下Homebrew。
1、Homebrew是什麼?
我們知道在Linux下安裝軟體不像Windows下面那樣,傻瓜式一步一步點選。Linux或者類Unix系統,安裝都是通過軟體包依賴,比如Red hat有yum,Ubuntu有apt-get。而mac下使用的就是Homebrew,簡稱brew。是Mac OSX上的軟體包管理工具,能在Mac中方便的安裝軟體或者解除安裝軟體,等同於apt-get、yum一樣。。
比如Homebrew官網,它的介紹是“The missing package manager for macOS”,macOS的缺少軟體包管理器。
2、安裝Homebrew。
知道了Homebrew(以下簡稱brew)是什麼後,我們就可以使用它了。如何安裝,很簡單,一行命令。安裝需要ruby,而Mac系統上已經預設安裝了ruby。
注意:安裝前需要有這些東西
Intel的cpu、10.10以上系統、Xcode、shell
安裝命令:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
3、Homebrew的使用。
下面的Homebrew文件翻譯來自beyond__devil的部落格,作者那個太亂了,自己整理總結了一下,方便以後使用。
brew –version // brew的版本概要
brew command [–verbose|-v] [options] [formula] …
// brew的命令格式:brew 命令 [詳情] [可選引數] [具體檢視的軟體名]
essential commands - 基本命令(重要命令)
使用 ‘–verbose | -v’ 選項,許多命令可以列印出額外的除錯資訊。注意:這個選項,必須放在命令後面(例如:brew install -v git)
install 軟體名 // 安裝軟體
remove 軟體名 // 解除安裝軟體
update // 通過Git從github上獲取最新版本的homebrew
list // 列出全部安裝的軟體
search text|/text/
// 執行一個軟體名子串的搜尋。支援2種:1.字串;2.正則,以’//’包圍。注意:search命令,傾向線上搜尋一些受歡迎的軟體(例如:github上評分較高的等),如果沒有搜尋到,才會列出本地搜尋到的軟體。(例如:brew search /wge*/)
commands - 命令列表
1.audit [–strict] [–online] [軟體名] //審查[某個軟體]
- Homebrew審查軟體的編碼風格是否符合規範,應該在提交一個軟體之前執行此命令來進行檢查
- 如果沒有提供 ‘軟體名’,則所有的軟體都會被檢查
- 使用 ‘–strict’ 選項,會執行額外的檢查(更嚴格)。建立新軟體時應該使用
- 使用 ‘–online’ 選項,會執行額外的慢檢查(需要一個網路連線)。建立新軟體時應該使用
- 執行audit命令,出現錯誤時,會以一個 ‘非0’ 的狀態退出!這是非常有用的,例如:實現預提交
2.cat 命令 //顯示命令的來源(github的來源,或者其他來源)
3.cleanup [–prune=days] [–dry-run] [-s] [軟體名]
- 針對所有或指定的某個已安裝的軟體,從 ‘Cellar’資料夾中移除所有舊版本。另外,從homebrew下載快取中,刪除所有的舊版本的下載包
- 指定 ‘–prune=days’ 選項,移除指定日期之前的所有快取檔案
- 指定 ‘–dry-run | -n’ 選項,顯示哪些檔案將會被移除,但並不實際操作
- 指定 ‘-s’ 選項,移除快取,刪除下載包,甚至是軟體最新版本的下載包(有些還未安裝,就會被刪除)。注意:對於任何已安裝軟體的下載包,並不會被刪除。如果你也想刪除這些,使用命令:’rm -rf $(brew –cache)’
4.commands [–quiet [–include-aliases]]
- 顯示內建的&外部的命令列表
- 指定 ‘–quiet’ 選項,僅僅列出命令的名稱,沒有頭部(header)
- 指定 ‘–quiet –include-aliases’ 選項,外部命令的別名也會被顯示出來
5.config
//顯示 homebrew&系統 除錯的有用的配置資訊。如果你提交一個錯誤報告,你可能會被要求提供這方面的資訊
6.create URL [–autotools | –cmake] [–no-fetch] [–set-name name] [–set-version version]
- 生成一個軟體的可下載檔案的URL,並在編輯器中開啟。Homebrew將嘗試自動獲取軟體名和版本,但是如果失敗,則需要你提供你自己的模板
- 指定 ‘–autotools’ 選項,建立一個 ‘Autotools-style’ 風格的基本模板, ‘–cmake’,建立一個 ‘CMake-style’ 風格的基本模板
- 指定 ‘–no-fetch’ 選項,Homebrew將不會下載URL到快取中,也因此不會對軟體新增’SHA256’
- ‘–set-name’ & ‘–set-version’ 選項,允許你明確的設定你建立的包的名字和版本
7.deps [–1] [-n] [–union] [–tree] [–all] [–installed] [–skip-build] [–skip-optional] 軟體名(可多個軟體名引數)
- 顯示軟體的依賴包。當傳遞了 ‘多個軟體名引數’,只會顯示這些軟體共有的依賴包(除非我們傳遞了 ‘–tree’ | ‘–all’ | ‘–installed’,這幾個選項,會列出每個軟體各自的依賴包)
- 指定 ‘–1’ 選項,僅僅顯示一級依賴包,而不會向下遞迴查詢依賴
- 指定 ‘-n’ 選項,顯示拓撲順序的依賴關係
- 指定 ‘–union’ 選項,顯示軟體的聯合的依賴關係,而不是交集
- 指定 ‘–tree’ 選項,顯示樹形結構的依賴關係
- 指定 ‘–all’ 選項,顯示所有軟體的依賴關係
- 指定 ‘–installed’ 選項,顯示所有已安裝軟體的依賴關係
- deps命令,預設顯示軟體的依賴關係,指定 ‘–stip-build’ 選項,跳過 ‘構建型別的依賴關係(只顯示可選的依賴??不懂)’ | 指定 ‘–skip-optional’ 選項,跳過 ‘可選的依賴關係’
8.desc 軟體名 //顯示軟體名稱&一行描述
9.desc [-s | -n | -d] pattern
- 指定 ‘-s’ 選項,在 ‘name’&’description’ 搜尋
- 指定 ‘-n’ 選項,只在 ‘name’ 搜尋
- 指定 ‘-d’ 選項,只在 ‘description’ 搜尋
- pattern支援兩種方式:1.文字;2.正則,使用 ‘//’ 包圍
- 軟體的描述會被快取,快取會在第一次搜尋時建立,使得第一次搜尋相對較慢
10.diy [–name=name] [–version=version]
- 自動確定 ‘非Homebrew’ 軟體的安裝字首,使用該命令的輸出,你可以將你自己的軟體安裝到 ‘Cellar’ 中,之後連結它到Homebrew的連結字首(也就是可以用Homebrew這套機制吧)
- ‘–name’&’–version’選項,允許明確設定你正在安裝的包的名字和版本
11.doctor
//檢測系統潛在的問題,如果發現問題,該命令會以一個 ‘非0’ 的狀態退出
12.edit //開啟所有的Homebrew,進行編輯
13.edit 軟體名 //在編輯器中開啟軟體
14.fetch [–force] [-v] [–devel | –HEAD] [–deps] [–build-from-source | –force-bottle] 軟體名
- 下載給定軟體名的原始碼包,對於tar壓縮包,也會列印 ‘SHA-1’&’SHA-256’ 校驗
- 指定 ‘–HEAD’| ‘–devel’ 選項,獲取 ‘最新版’ 而非 ‘穩定版’
- 指定 ‘-v’ 選項,如果URL代表一個VCS,進行一個詳細的VCS檢出。當一個存在的VCS快取被更新,這會很有用(VCS就是版本控制程式,獲取更新提交的檔案)
- 指定 ‘–force’ 選項,移除之前快取的版本,重新獲取新的
- 指定 ‘–deps’ 選項,’也’ 會下載所有列出軟體的依賴(也,表示不僅下載軟體,也下載軟體的依賴)
- 指定 ‘–build-from-source’ 選項,下載原始碼而不是安裝包?
- 指定 ‘–force-bottle’ 選項,如果OS X已經存在當前版本,仍舊下載。即使在安裝過程中,還未使用。
15.home //在瀏覽器中開啟 ‘Homebrew’ 的主頁
16.home 軟體名 //在瀏覽器中開啟 ‘軟體’ 的主頁
17.info 軟體名 //顯示軟體的相關資訊
18.info –github 軟體名
//開啟軟體在github上的歷史頁面,檢視軟體的本地歷史,使用:brew log -p 軟體名
19.info –json=version (–all | –installed | 軟體名)
- 列印軟體的json表示,目前version只支援 ‘v1’
- 指定 ‘–all’ 選項,獲取所有軟體的資訊
- 指定 ‘–installed’ 選項,獲取已安裝的所有軟體的資訊
20.install [–debug] [–env=std | super] [–ignore-dependencies] [–only-dependencies] [–cc=compiler] [–build-from-source | –force-bottle] [–devel | –HEAD] 軟體名
- 安裝軟體的詳細引數,軟體名可被指定為幾種不同的方式,檢視 ‘specifying formulae’
- 指定 ‘–debug’ 選項,當brew失敗時,在臨時構建的目錄中,開啟一個訪問IRB|shell的互動式的除錯會話
- 指定 ‘–env=std’ 選項,使用 ‘標準構建環境’ 代替 ‘super環境’
- 指定 ‘–env=super’ 選項,使用 ‘super環境’,即使 軟體本身指定了 ‘標準構建環境’
- 指定 ‘—ignore-dependencies’ 選項,跳過軟體的任何依賴的安裝。如果這些依賴並不存在,軟體將可能安裝失敗
- 指定 ‘–only-dependencies’ 選項,只安裝軟體的依賴,而不安裝軟體自身
- 指定 ‘–cc=compiler’ 選項,嘗試使用 ‘compiler’ 編譯。’compiler’ - 具體的編譯器,例如:gcc-4.2等
- 指定 ‘–build-from-source’ 選項,即使提供了軟體的 ‘bottle’ 版,也從原始碼編譯安裝
- 指定 ‘–force-bottle’ 選項,即使已經給出了自定義的安裝選項,如果軟體的 ‘bottle版’ 存在,強制安裝 ‘bottle版’
- 指定 ‘–devel’ 選項,軟體定義了 ‘devel版’,安裝 ‘devel版’(開發版)
- 指定 ‘–HEAD’ 選項,軟體定義了 ‘HEAD版’,安裝 ‘HEAD版’(最新版,又名:master, trunk, unstable)
- 為了安裝 ‘HEAD版’ 中更新版本(是這樣麼,看後面的命令,也僅僅是安裝head版啊),使用 ‘brew rm 軟體名 && brew install –HEAD 軟體名’
21.install –interactive [–git] 軟體名
- 下載並修補軟體,接著開啟一個shell。這允許使用者執行’./configure –help’,同時除此以外,還可以確定如何將一個軟體包轉換為一個 ‘Homebrew軟體’
- 指定 ‘–git’ 選項,Homebrew將建立一個Git倉庫,對於建立軟體的補丁很有幫助
22.irb [–examples]
- 進入互動的 ‘Homebrew Ruby shell’
- 指定 ‘–example’ 選項,將顯示幾個示例
23.leaves
//顯示已安裝的軟體(並不依賴另外的已安裝軟體),可理解為 ‘獨立的軟體’。leaves並非離開,而是leaf(葉子)的複數形式,表示分支結構中最尖端的軟體,所以不會依賴其他軟體
24.ln(簡寫),link [–overwrite] [–dry-run] [–force] 軟體名
- 連結軟體的所有安裝檔案到 ‘Homebrew prefix’,當你安裝軟體時,這個會自動完成,但是對於DIY安裝是非常有用的
- 指定 ‘–overwrite’ 選項,當連結時,Homebrew將刪除 ‘Homebrew prefix’ 中已經存在的檔案,會重新生成連結檔案
- 指定 ‘–dry-run | -n’ 選項,Homebrew將列出所有將要生成連線的檔案,並不會真正執行。獲取傳遞了 ‘–overwrite’ 選項,將會列出要刪除的檔案,但並不會真正刪除
- 指定 ‘–force’ 選項,Homebrew將允許keg-only軟體被連結(預設情況下,keg-only不能被連結)
25.ls,list [–full-name]
- 列出所有已安裝的軟體
- 指定 ‘–full-name’ 選項,列印軟體的全稱
26.ls,list –unbrewed
//列出所有 ‘Homebrew prefix’ 中並未通過 Homebrew 進行安裝的檔案!!
27.ls,list [–version [–multiple]] [–pinned] [軟體名]
- 指定了 ‘軟體名’,會列出軟體已安裝的檔案
- 指定 ‘–verbose’ 選項,會遞迴列出,每個軟體的所有子模目錄的內容
- 指定 ‘–version’ 選項,顯示所有已安裝軟體的版本號
- 指定 ‘–version 軟體名’,只顯示該軟體的版本號
- 指定 ‘–version –multiple’ 選項,只顯示多版本安裝的軟體
- 指定 ‘–pinned’ 選項,列出 ‘pinned 軟體’的版本
28.log [git-log-options] 軟體名 … (可多個軟體)
- 顯示指定軟體的git log日誌
- 指定 ‘git-log-options’ 選項,應該是日誌本身的選項
29.missing [軟體名]
//檢查指定軟體的丟失的依賴!如果沒有提供 ‘軟體名’,檢查所有通過brew安裝的軟體
30.migrate [–force] 軟體名
- 將重新命名的包命名為新的名字,針對軟體的包名字為舊名稱
- 指定 ‘–force’ 選項,將處理已安裝的軟體&指定的軟體,就像它們來自相同的taps(補丁),並遷移它們
31.options [–compact] (–all | –installed | 軟體名)
- 顯示指定的軟體的安裝引數
- 指定 ‘–compact’ 選項,在一個已空格分隔的單行上,顯示所有的選項
- 指定 ‘–all’ 選項,顯示所有軟體的選項
- 指定 ‘–installed’ 選項,顯示所有已安裝軟體的選項
32.outdated [–quiet | –verbose | –json=v1]
- 顯示有一個可更新版本的軟體列表
- 預設情況下,版本資訊將顯示在互動的外殼中,並在其他情況下被抑制
- 指定 ‘–quiet’ 選項,只顯示軟體列表的名稱(優先於 –verbose 選項)
- 指定 ‘–verbose’ 選項,展示詳細的版本資訊
- 指定 ‘–json=version’ 選項,輸出格式為json。有效的版本目前只能是 ‘v1’
33.pin 軟體名
//’pin’(鎖,訂,把…別住,可理解為:不允許改動軟體)指定的軟體,當釋出brew升級命令,阻止軟體被更新
34.unpin 軟體名
//’unpin’(與pin相反,解鎖軟體),發不brew升級命令,允許軟體被更新
35.prune [–dry-run]
- 從 ‘Homebrew prefix’ 中,移除無效的符號連結。通常不需要,但是當執行了DIY安裝時,會非常有用
- 指定 ‘–dry-run | -n’ 選項,只顯示哪些連結會被移除,並不會執行真正的刪除
36.reinstall 軟體名 //先解除安裝,再安裝軟體
37.rm, remove, uninstall [–force] 軟體名
- 解除安裝軟體
- 指定 ‘–force’ 選項,如果軟體安裝了多個版本,移除所有的安裝版本
38.search,-S
//展示所有本地通過brew安裝的軟體(包括:打補丁(tapped)的軟體)。當沒有傳遞引數,不會執行線上(online)搜尋
39.search,-S text | /text/
//執行一個軟體名子串的搜尋。支援2種:1.字串;2.正則,以’//’包圍。注意:search命令,傾向線上搜尋一些受歡迎的軟體(例如:github上評分較高的等),如果沒有搜尋到,才會列出本地搜尋到的軟體
40.search (–debian | –fedora | –fink | –macports | –opensuse | –ubantu) text
//在指定的包管理器的列表中搜尋
41.sh [–env=std]
//例項化一個Homebrew構建環境。使用我們的 ‘years-battle-hardened’ Homebrew構建邏輯幫助你 ./configure && make && make install 或者 甚至你的gem安裝成功。如果你執行 Homebrew,在一個僅配置了Xcode的環境中,由於它新增了工具(例如:建立你的PATH),否則編譯系統會找不到
42.switch name version
//連結指定名稱的具體版本到 ‘Homebrew prefix’
43.tap
//顯示所有已安裝的taps列表
44.tap [–full] user/repo [URL]
- 查詢軟體的遠端倉庫
- 未指定URL,通過https從github上查詢軟體倉庫。由於有如此多的taps存在於github上,這個命令是一個捷徑:tap / => https://github.com//homebrew-
- 如果指定了URL,將會從任意位置,使用各種傳輸協議,只要是git支援的方式,tap一個命令倉庫。1個引數形式的tap最簡單,但是有限制。2個引數的命令不會假定,因此taps可以從任意位置,任意協議克隆得到。而不是僅從github&https協議得到。
- 預設情況,倉庫被克隆作為一個淺層副本(–depth=1),指定 ‘–full’ 選項,將會使用一個完全克隆!
45.tap –repair
//遷移tapped軟體,從基於符號連結結構,到基於目錄結構
46.tap –list-official
//列出所有官方的taps
47.tap –list-pinned
//列出所有pinned(鎖定)的taps
48.tap-info tap(補丁名)
//顯示tap的相關資訊
49.tap-info –json=version (–installed | taps)
- 列印taps的json格式,當前版本僅僅能接受的值是 ‘v1’
- 指定了 ‘–installed’ 選項,獲取所有已安裝的taps資訊
50.tap-pin tap
//pin tap(鎖定tap),使它的軟體優先於使用者提供的軟體
51.tap-unpin tap
//unpin tap(解鎖tap),使它的軟體不在優先
52.test [–devel | –HEAD] [–debug] 軟體名
- 一部分軟體提供了一個測試方法。’brew test 軟體名’ 執行測試方法。沒有標準的輸出或返回碼,但是它通常會提示使用者,安裝的軟體存在錯誤。
- 指定 ‘–devel | –HEAD’ 選項,用於測試軟體的 ‘開發版’ 或 ‘HEAD版’
- 指定 ‘–debug’ 選項,當測試失敗,在臨時構建的目錄中,開啟一個訪問IRB|shell的互動式的除錯會話
53.unlink [–dry-run] 軟體名
- 從 ‘Homebrew prefix’ 中刪除軟體的符號連結。這對於臨時禁用一個軟體很有幫助:’brew unlink 軟體名 && commands && brew link 軟體名’
- 指定 ‘–dry-run | -n’ 選項,將會列出所有將要刪除的檔案,但是並不會真正執行刪除
54.unpack [–git | –patch] [–destdir=path] 軟體名
- 解壓軟體的原始碼到當前工作目錄的子目錄。
- 指定 ‘–destdir=path’ 選項,子目錄將被建立為給定的目錄名
- 指定 ‘–patch’ 選項,軟體的patches(補丁)將會被應用到解壓到原始碼中
- 指定 ‘–git’ 選項,git倉庫將會被初始化到解壓的原始碼中。這對於建立軟體的patches(補丁)很有用
55.untap tap //移除一個tap倉庫
56.update [–rebase]
- 通過git獲取 ‘Homebrew’ 的最新版本,以及所有軟體的最新版從github上
- 指定 ‘–rebase’ 選項,’git pull –rebase’ 將被呼叫
57.upgrade [install-options] [–cleanup] [軟體名]
- 升級過時的,unpinned(未鎖定)的brew安裝的軟體
- 安裝時的選項,在這裡也有效(升級和安裝時,都可使用軟體安裝時的引數)
- 指定 ‘–cleanup’ 選項,將移除之前安裝的軟體所有版本
- 指定 ‘軟體名’,僅升級指定的軟體(即使該軟體被pin-鎖定,也可以升級)
58.uses [–installed] [–recursive] [–skip-build] [–skip-optional] [–devel | –HEAD] 軟體名
- 指定的軟體名是作為某個軟體的依賴,列出所有依賴此軟體的軟體列表。當指定了多個軟體名,顯示依賴全部指定軟體的軟體列表
- 指定 ‘–recursive’ 選項,解決多餘一級的依賴
- 指定 ‘–installed’ 選項,僅列出已經安裝的軟體
- 指定 ‘–skip-build’ 選項,跳過將此軟體作為 ‘build type’ 依賴的軟體列表
- 指定 ‘–skip-optional’ 選項,跳過將此軟體作為 ‘optional type’ 依賴的軟體列表
- 預設,uses顯示的是穩定版軟體的使用,指定 ‘–devel | –HEAD’ 選項,顯示 ‘開發版 | HEAD版’ 軟體列表
59.–cache [軟體名]
- 顯示 ‘Homebrew’ 的下載快取,可檢視 ‘HOMEBREW_CACHE’
- 指定 ‘軟體名’,顯示用於快取軟體的檔案或目錄
60.–cellar [軟體名]
- 顯示 ‘Homebrew’ 的 ‘Cellar’ 路徑。預設:
(brew−−prefix)/Cellar,如果這個目錄不存在,則為: (brew --prefix)/Cellar,如果這個目錄不存在,則為:(brew –repository)/Cellar - 指定 ‘軟體名’,顯示軟體將被安裝到 ‘Cellar’ 中的位置,沒有任何版本目錄的排序,作為最終的路徑
61.–env //顯示 ‘Homebrew’ 構建環境的一個簡介
62.–prefix [軟體名]
//顯示 ‘Homebrew’ 的安裝路徑,預設是:/usr/local
63.–repository
//顯示 ‘Homebrew’ 的 ‘.git’ 目錄路徑。對於標準安裝,’prefix’ 和 ‘repository’ 是相同的目錄
64.–version
//列印brew的版本到標準錯誤輸出並退出
更多的用法可以看官網文件。
總結一下,brew的工作目錄在/usr/local/下面,下載的軟體放在Cellar(/usr/local/Cellar)檔案下,預設安裝在opt(/usr/local/opt/)目錄下。
常用的命令:
brew intstall:安裝軟體
brew uninstall: 解除安裝軟體
brew list:列出已安裝的軟體
brew update:更新brew
brew home:用瀏覽器開啟brew的官方網站
brew info:顯示軟體資訊
brew deps:顯示包依賴
brew -v: 檢視homebrew版本
4、安裝php7。
通過先前的一些介紹,我們對brew有了一定認識和了解。接下來我們就來使用brew安裝升級php。
首先來建立目錄,如果你沒有建立過該目錄,就先建立。
sudo mkdir /usr/local/var
sudo chmod 777 /usr/local/var
修改成你自己的使用者名稱和組,如果你沒有建立過該目錄
sudo mkdir /usr/local/sbin/
sudo chown -R <username>:<group> /usr/local/sbin/
(使用命令,whoami可以檢視username,group一般為wheel。例如:sudo chown -R anumbrella:wheel /usr/local/sbin/)
如果你原來使用過brew安裝php的話,先使用
brew unlink php56
php56即(php5.6版本),如果你使用的是mac自帶的php,可以忽略該命令。
接下來安裝php7.0
brew install php70 --with-apxs2 --with-apache --with-gmp --with-imap --with-tidy --with-debug
後面引數一定要帶上,如果不帶引數,直接使用brew install php70命令安裝,最後安裝成功後,沒有libphp7.so。我們無法在Apache中引用php7。
(mac 最新系統Sierra的釋出,Apache載入php的模組(libphpx.so)不再預設生成,在安裝php7的時候,要新增–with-apache引數)
安裝好過後開啟PHP70程式
brew link php70
輸入命令,檢視是否成功
php -v
上面兩條命令是原來使用過brew安裝過php後,更新php後使用,會出現php7.0版本,即安裝成功。如果第一次安裝,或者使用的mac自帶的php。。可能無法成功,可以忽略。
5、修改Apache配置檔案
開啟Apache配置檔案
sudo vim /etc/apache2/httpd.conf
將模組php5的註釋掉,新增php7的。
#LoadModule php5_module libexec/apache2/libphp5.so
LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so
注意:libphp7.so是預設安裝在/usr/local/opt/php70/libexec/apache2/目錄下的,按照你的實際情況,換成你自己的安裝路徑即可。
<IfModule php7_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>
更改配置檔案為php7_module的。。
開啟.bash_profile檔案,新增php7環境變數:
export PATH=/usr/local/opt/php70/bin:$PATH;
然後:
source .bash_profile
現在可以使用 php -v命令了。
最後重啟Apache即可,
sudo apachectl restart
相關文章
- MAC下的homebrew安裝及映象調整Mac
- mac下安裝homebrewMac
- React Native SDK 升級問題及分包方案React Native
- 在Mac上使用Homebrew升級到PHP為最新版本MacPHP
- 升級 PHP7 過程記錄PHP
- 解決 macOS HomeBrew 下載緩慢的問題Mac
- Mac 下使用homebrew安裝NVMMac
- Mac OSX系統homebrew update Fetching failed問題解決方案MacAI
- Laravel5.5 升級到 5.7 問題及解決方法Laravel
- Mac下通過Homebrew安裝MySQLMacMySql
- ReactNative升級0.56.0注意問題React
- Mac上HomeBrew安裝及換源教程Mac
- Centos 7升級 PHP7 到 PHP8CentOSPHP
- mac 按照 homebrewMac
- Mac 下 Homestead 3.0.0 升級到 Homestead 6.3.0Mac
- XCode 10 升級問題總結XCode
- Flutter1.12 升級後有什麼問題?型別盤點(附學習文件)Flutter型別
- Mac安裝HomebrewMac
- 使用weiXinRecorded不支援targetSdkVersion升級23及以上問題的解決方案
- 升級 Homestead box 遇到的 502 問題
- .Net Core 2.1 升級3.1 問題整理
- Mac下更換Homebrew映象源的實現方法Mac
- 2019最新Python學習教程升級版(Linux 下如何除錯 Python?)PythonLinux除錯
- Nuxt升級2.0.0時出現的問題UX
- Mac利器Homebrew介紹Mac
- Mac 系統 Homebrew 工具Mac
- Web 學習之跨域問題及解決方案Web跨域
- 學習scala,java安裝jdk及jre的問題JavaJDK
- react 學習 問題React
- Angular CLI 升級 6.0 之後遇到的問題Angular
- chorme自動升級導致跨域問題ORM跨域
- 升級 node18 遇到的問題總結
- [BUG反饋]升級遇問題1103升1212 -step3.htmlHTML
- iOS12測試版升級常見問題 iOS12值得升級嗎?iOS
- Mac電腦安裝homebrewMac
- Mac 升級 Emacs26Mac
- 升級mac的PHP版本MacPHP
- Mac brew 升級 PHP版本MacPHP
- Mac 下切換 PHP 版本問題MacPHP