摘要:上面的命令會(huì)從源碼下載,并進(jìn)行編譯安裝。我在安裝的時(shí)候遇到了一個(gè)錯(cuò)誤最終在上找到了該。其原因可能是的沒有正確安裝。第二行命令的作用是賦予可執(zhí)行權(quán)限。
本文主要內(nèi)容翻譯自《macOS 10.12 Sierra Apache Setup: Multiple PHP Versions》,并加入了自己的實(shí)踐。
前言:每次搭建開發(fā)環(huán)境真的是一件很麻煩的事情,但隨著時(shí)間的推移和系統(tǒng)環(huán)境的差異,網(wǎng)上的教程自己曾經(jīng)安裝的經(jīng)驗(yàn)經(jīng)常不合時(shí)宜,總會(huì)出現(xiàn)一些這樣或那樣的問題。通過幾番搜尋,我終于找到一篇完善的教程,將其翻譯成了中文。我也會(huì)持續(xù)更新這篇文章,不斷完善并記錄遇到的或新或舊的問題。希望這篇文章可以終結(jié)在 macOS 上安裝 PHP 開發(fā)環(huán)境的話題。
關(guān)于如何在 macOS 10.12 上搭建 Web 開發(fā)環(huán)境,原作者一共寫了三篇文章。這是第一篇。
當(dāng)前的操作系統(tǒng)是 macOS 10.12,這篇教程講述的環(huán)境搭建和一般 PHP 安裝最大的不同是,我們不使用系統(tǒng)自帶的 Apache(macOS 自帶了 apache、python、ruby 等一些列開發(fā)工具),而是使用 Homebrew 的 Apache。當(dāng)然,系統(tǒng)自帶的 Apaceh 也是可以工作的。
在 macOs 上進(jìn)行 Web 開發(fā),確實(shí)是一件很令人愉快的事情。目前也有很多集成開發(fā)工具可以方便地搭建開發(fā)環(huán)境,比如 MAMP PRO,它具有非常漂亮的一個(gè) UI 界面,并且集成了 Apache、PHP 和 MySQL 三個(gè)軟件,非常適合新手使用。但是有時(shí)候,由于其配置模板有限,軟件沒有及時(shí)升級(jí),使用它的時(shí)候可能會(huì)遇到軟件版本不能及時(shí)更新、配置不夠方便靈活等問題。
于是很多人就開始尋找替代方案。幸運(yùn)的是,這篇文章就是一個(gè)替代方案。并且文章給出了簡(jiǎn)單直接的安裝配置步驟。
1. 安裝 Homebrew以下所有軟件的安裝都依賴于 macOS 上的一個(gè)包管理工具 Homebrew。使用 brew 命令,我們可以方便地在 mac 上安裝各種功能各異的軟件,當(dāng)然,首先的安裝 homebrew。安裝步驟也非常簡(jiǎn)單,打開終端然后輸入下面的代碼:
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
然后等待終端提示你輸入密碼,程序就會(huì)開始自動(dòng)安裝。如果你沒有安裝 XCode Command Line Tools,它會(huì)自動(dòng)幫你裝上。等待幾分鐘,待完成后,就可以使用下面的命令查看 Homebrew 是否正確安裝:
$ brew --version Homebrew 1.1.5 Homebrew/homebrew-core (git revision a50a6; last commit 2016-12-28)
同時(shí)可能你也需要執(zhí)行一下下面的命令,來檢測(cè)配置是否正確:
$ brew doctor
若有配置不當(dāng)?shù)牡胤剑琤rew 會(huì)給出提示,安裝提示修復(fù)即可。
1.1 添加第三方倉(cāng)庫(kù)我們將需要使用一些來自第三方倉(cāng)庫(kù)的軟件,所以需要添加額外的倉(cāng)庫(kù):
$ brew tap homebrew/dupes $ brew tap homebrew/versions $ brew tap homebrew/php $ brew tap homebrew/apache
然后更新 brew:
$ brew update
接下來就可以盡情使用 brew 了。
2. Apache 的安裝最新的 macOS 10.12 預(yù)裝了 Apache 2.4,但蘋果移除了一些必要的腳本,所以 Apache 和 Homebrew 配合使用將會(huì)變得困難。當(dāng)然解決該問題的方法就是,使用 Homebrew 重新安裝配置 Apache,并使其運(yùn)行在標(biāo)準(zhǔn)端口上(80/443)。
如果之前已經(jīng)安裝有 Apache 并且在運(yùn)行中,首先就需要關(guān)閉它,然后移除自動(dòng)加載腳本。下面的命令沒有任何副作用,只管運(yùn)行就好了:
$ sudo apachectl stop $ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null $ brew install httpd24 --with-privileged-ports --with-http2
接下來需要等待一小會(huì)兒,因?yàn)檫@個(gè)命令是下載源碼并編譯安裝 Apache。上面命令執(zhí)行結(jié)果如下面這樣:
? /usr/local/Cellar/httpd24/2.4.23_2: 212 files, 4.4M, built in 1 minute 45 seconds
這里的路徑很重要,因?yàn)樵诮酉聛淼牟襟E中,我們都需要使用這個(gè)路徑,在這個(gè)例子中,路徑是 /usr/local/Cellar/httpd24/2.4.23_2/,如果你的路徑不是這個(gè),則在運(yùn)行下面的命令的時(shí)候,將其替換為你的路徑就可以了:
sudo cp -v /usr/local/Cellar/httpd24/2.4.23_2/homebrew.mxcl.httpd24.plist /Library/LaunchDaemons sudo chown -v root:wheel /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist sudo chmod -v 644 /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
現(xiàn)在我們就通過 Homebrew 安裝上了 Apache,并使用管理員權(quán)限將其配置為自動(dòng)啟動(dòng)。這個(gè)時(shí)候 Apache 應(yīng)該已經(jīng)在運(yùn)行了,所以你打開瀏覽器訪問 localhost 將會(huì)看到 “It works!”。
2.1 一些小問題如果你的瀏覽器提示說不能建立連接到服務(wù)器,那么首先檢查一下 Apache 服務(wù)是否已經(jīng)啟動(dòng)了:
$ ps -aef | grep httpd
如果 Apache 正在運(yùn)行,你將會(huì)看到一些 httpd 進(jìn)程。
重啟 Apache:
$ sudo apachectl -k restart
我們也可以監(jiān)控 Apache 的錯(cuò)誤日志,查看是否有錯(cuò)誤信息:
$ tail -f /usr/local/var/log/apache2/error_log
如果上面這些步驟都沒有解決問題,那么確定你的 Apache 是否監(jiān)聽了 80 端口,即 /usr/local/etc/apache2/2.4/httpd.conf 配置文件是否有 Listen: 80,或者 Listen: 后面是其他端口。
Apache 是通過 apachectl 來進(jìn)行控制的,它的基本使用方法如下:
$ sudo apachectl start $ sudo apachectl stop $ sudo apachectl -k restart
-k 參數(shù)將強(qiáng)制重啟 Apache,不管 Apache 是否準(zhǔn)備好。
最終我將我的 Apache 的端口修改為了 7070,主要是因?yàn)?80 端口是 HTTP 服務(wù)的默認(rèn)端口,8080 端口是 Tomcat 的默認(rèn)端口,為了避免與其他軟件如 nginx 等發(fā)生潛在端口沖突問題,所以改為了 7070。
2.2 Apache 的配置現(xiàn)在我們已經(jīng)有了一個(gè) Web 服務(wù)器,接下來我們需要對(duì)其進(jìn)行一些配置,以便于更方便我們本地的開發(fā)。
首先修改 Apache 的 document root,這是 Web 服務(wù)的根目錄,Apache 會(huì)從這個(gè)目錄中尋找資源文件。默認(rèn)的 document root 是 /Library/WebServer/Documents。作為一個(gè)開發(fā)環(huán)境,我們可能更希望網(wǎng)站的根目錄(即 Web 服務(wù)的根目錄)在我們自己的用戶主目錄下。所以接下來修改配置。
我們可以在終端通過 open -e 命令使用 Mac 默認(rèn)的文本編輯器打開一個(gè)文件:
$ open -e /usr/local/etc/apache2/2.4/httpd.conf
搜索 DocumentRoot,然后你會(huì)看到下面這行:
DocumentRoot "/usr/local/var/www/htdocs"
將這行配置改為自己的用戶主目錄中的目錄,把 your_user 改為你的用戶名:
DocumentRoot /Users/your_user/sites
緊接著還要將上面這行代碼下面的
在
# AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # AllowOverride FileInfo AuthConfig Limit # AllowOverride All
接下來通過取消注釋使用 mod_rewrite 模塊:
LoadModule rewrite_module libexec/mod_rewrite.so2.4 用戶和用戶組
現(xiàn)在 Apache 已經(jīng)指向了我們的用戶主目錄下的 sites 目錄,不過依舊還存在一個(gè)問題。Apche 運(yùn)行的時(shí)候,其用戶及用戶組都是 daemon,當(dāng)程序訪問我們的用戶主目錄的時(shí)候,就會(huì)遇到權(quán)限問題。解決這個(gè)問題的方法就是,在 httpd.conf 將用戶和用戶組分別改為你的用戶名 your_user 和 staff:
User your_user Group staff2.5 sites 目錄
接下來就需要在用戶主目錄下創(chuàng)建一個(gè) sites 目錄了,然后添加一個(gè)簡(jiǎn)單的 index.html 文件,并寫入 My User Web Root
代碼:
$ mkdir ~/Sites $ echo "My User Web Root
" > ~/Sites/index.html
然后重啟 Apache 使配置生效:
$ sudo apachectl -k restart
再訪問 http://localhost 就會(huì)顯示 index.html 里面的內(nèi)容。如果你的配置也生效了,我們就可以繼續(xù)下一步了。
3. PHP 的安裝我們接下來安裝 PHP 5.5、PHP 5.6、PHP 7.0 和 PHP 7.1,并使用一個(gè)簡(jiǎn)單的腳本來切換不同的版本。
你可以使用 brew options php55 來查看所有可以安裝的選項(xiàng)設(shè)置,比如在這個(gè)例子中,我們使用 --with-httpd24 參數(shù)來編譯安裝 PHP 以及使 Apache 支持 PHP 所需要的一些模塊。
$ brew install php55 --with-httpd24 $ brew unlink php55 $ brew install php56 --with-httpd24 $ brew unlink php56 $ brew install php70 --with-httpd24 $ brew unlink php70 $ brew install php71 --with-httpd24
上面的命令會(huì)從源碼下載 PHP,并進(jìn)行編譯安裝。這可能需要一點(diǎn)時(shí)間。
如果之前已經(jīng)安裝過 PHP,可能需要使用 reinstall 來代替 install 進(jìn)行安裝。
3.0.1 ISSUE configure: error: Cannot find libz我在安裝的時(shí)候遇到了一個(gè)錯(cuò)誤:
==> ./configure --prefix=/usr/local/Cellar/php56/5.6.11_2 --localstatedir=/usr/local/var --sysconfdir=/usr/local/etc/php/5.6 --with-config-file-path=/usr/local/etc/php/5.6 --with checking whether to enable the SQLite3 extension... yes checking bundled sqlite3 library... yes checking for ZLIB support... yes checking if the location of ZLIB install directory is defined... no configure: error: Cannot find libz
最終在 Github 上找到了該 ISSUE [Cannot find libz when install php56 #1946
](https://github.com/Homebrew/h...。
其原因可能是 Xcode 的 Command Line Tool 沒有正確安裝。解決問題的方法是運(yùn)行下面的命令來重新安裝:
xcode-select --install
可能你也需要根據(jù)自己的需要修改一些 PHP 的配置,常見的比如修改內(nèi)存配置或 date.timezone 配置。各個(gè)版本的配置文件即 php.ini 在下面的目錄:
/usr/local/etc/php/5.5/php.ini /usr/local/etc/php/5.6/php.ini /usr/local/etc/php/7.0/php.ini /usr/local/etc/php/7.1/php.ini3.1. Apache 和 PHP 的配置 - 第一部分
我們已經(jīng)成功安裝了多個(gè)版本的 PHP,但我們還需要告訴 Apache 怎么使用它們。再次打開 /usr/local/etc/apache2/2.4/httpd.conf,并搜索 #LoadModule php5_module 所在行。
可以發(fā)現(xiàn),每個(gè)版本的 PHP 都有一個(gè) LoadModule 入口,每個(gè) LoadModule 都指向一個(gè)特定版本的 PHP。這里默認(rèn)的路徑如 /usr/local/Cellar/php71/7.1.0_11/libexec/apache2/libphp7.so 是 brew 應(yīng)用程序的安裝路徑,我們可以使用一個(gè)更通用的路徑來替換它們(具體的路徑可能有所不同):
LoadModule php5_module /usr/local/Cellar/php55/5.5.38_11/libexec/apache2/libphp5.so LoadModule php5_module /usr/local/Cellar/php56/5.6.29_5/libexec/apache2/libphp5.so LoadModule php7_module /usr/local/Cellar/php70/7.0.14_7/libexec/apache2/libphp7.so LoadModule php7_module /usr/local/Cellar/php71/7.1.0_11/libexec/apache2/libphp7.so
將上面的路徑修改為:
LoadModule php5_module /usr/local/opt/php55/libexec/apache2/libphp5.so LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
之所以可以這么修改,是因?yàn)?/usr/local/opt/php71 其實(shí)是由 brew 創(chuàng)建的 /usr/local/Cellar/php71 的一個(gè)軟連接。
這么修改的好處是,升級(jí) PHP 的小版本號(hào)的時(shí)候,比如由 7.1.0_11 時(shí),我們就不需要再修改 LoadModule 對(duì)應(yīng)的值了。
我們每次開發(fā)或運(yùn)行依舊只需要一般也只能使用某一個(gè)版本的 PHP。以我們要使用 7.1 這個(gè)版本開發(fā)應(yīng)用為例,將其他版本的 LoadModule 都注釋掉,只保留對(duì)應(yīng)版本的 LoadModule:
#LoadModule php5_module /usr/local/opt/php55/libexec/apache2/libphp5.so #LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so #LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
這樣的配置就會(huì)告訴 Apache 使用 PHP 7.1 來處理 PHP 請(qǐng)求。(稍后我們將添加切換 PHP 版本的腳本。)
接下來還需要配置 PHP 的主目錄索引文件(Directory Indexes),找到下面的代碼塊:
DirectoryIndex index.html
將其替換為下面的代碼:
DirectoryIndex index.php index.html SetHandler application/x-httpd-php
保存后重啟 Apache,PHP 的安裝就完成了:
$ sudo apachectl -k restart3.2. 驗(yàn)證 PHP 安裝結(jié)果
驗(yàn)證 PHP 是否正確安裝的最好方法是使用 phpinfo() 這個(gè)函數(shù),這個(gè)函數(shù)會(huì)輸出 PHP 的版本等信息。當(dāng)然,最好不要在你的生產(chǎn)環(huán)境中使用它。但在開發(fā)環(huán)境中,使用它對(duì)我們了解系統(tǒng)中 PHP 安裝信息非常有幫助。
在網(wǎng)站主目錄即你的 sites/ 目錄下創(chuàng)建一個(gè) info.php 的文件,然后輸入下面的代碼:
打開瀏覽器,訪問 http://localhost:7070/info.php,你講看到下面的完美的 PHP 信息頁(yè)面:
如果能夠看到類似的頁(yè)面,就說明 Apache 和 PHP 已經(jīng)成功運(yùn)行了。你可以通過注釋 LoadModule ... php56 ... 來測(cè)試其他版本的 PHP。修改配置后,重啟 Apache 并刷新頁(yè)面就能看到類似的頁(yè)面了。
3.3 PHP 版本切換腳本在開發(fā)中,如果每次都通過修改 /usr/local/etc/apache2/2.4/httpd.conf 文件去切換 PHP 版本,顯然太麻煩了。有沒有更容易的方法呢?幸運(yùn)的是,一些勤勞的開發(fā)者已經(jīng)寫好了這樣的一個(gè)腳本 PHP switcher script。
接下來我們將添加 sphp 到 brew 的 /usr/local/bin 里面。原文給的方法是使用下面的命令:
$ curl -L https://gist.github.com/w00fz/142b6b19750ea6979137b963df959d11/raw > /usr/local/bin/sphp $ chmod +x /usr/local/bin/sphp
其中第一行命令的作用,就是將 Gist 上的這個(gè)切換 PHP 版本的腳本下載并寫入到 /usr/local/bin/sphp 這個(gè)文件里面。第二行命令的作用是賦予 /usr/local/bin/sphp 可執(zhí)行權(quán)限。
但由于國(guó)內(nèi)并不能訪問 Gist,所以第一行命令并不能執(zhí)行成功。所以我在這里提供了整個(gè)腳本代碼:
#!/bin/bash # Check if command was ran as root. if [[ $(id -u) -eq 0 ]]; then echo "The command "sphp" should not be executed as root or via sudo directly." echo "When a service requires root access, you will be prompted for a password as needed." exit 1 fi # Usage if [ $# -ne 1 ]; then echo "Usage: sphp [phpversion]" echo "Versions installed:" brew list | grep "^php[0-9]{2,}$" | grep -o -E "[0-9]+" | while read -r line ; do echo " - phpversion: $line" done exit 1 fi currentversion="`php -r "error_reporting(0); echo str_replace(".", "", substr(phpversion(), 0, 3));"`" newversion="$1" majorOld=${currentversion:0:1} majorNew=${newversion:0:1} minorNew=${newversion:1:1} brew list php$newversion 2> /dev/null > /dev/null if [ $? -eq 0 ]; then echo "PHP version $newversion found" # Check if new version is already the current version. # if [ "${newversion}" == "${currentversion}" ]; then # echo -n "PHP version ${newversion} is already being used. Continue by reloading? (y/n) " # while true; do # read -n 1 yn # case $yn in # [Yy]* ) echo && break;; # [Nn]* ) echo && exit 1;; # esac # done # fi echo "Unlinking old binaries..." brew unlink php$currentversion 2> /dev/null > /dev/null echo "Linking new binaries..." brew link php$newversion echo "Linking new modphp addon..." sudo ln -sf `brew list php$newversion | grep libphp` /usr/local/lib/libphp${majorNew}.so echo /usr/local/lib/libphp${majorNew}.so echo "Fixing LoadModule..." apacheConf=`httpd -V | grep -i server_config_file | cut -d """ -f 2` sudo sed -i -e "/LoadModule php${majorOld}_module/s/^#*/#/" $apacheConf if grep "LoadModule php${majorNew}_module .*php${newversion}" $apacheConf > /dev/null then sudo sed -i -e "/LoadModule php${majorNew}_module .*php${newversion}/s/^#//" $apacheConf else sudo sed -i -e "/LoadModule php${majorNew}_module/s/^#//" $apacheConf fi echo "Updating version file..." pgrep -f /usr/sbin/httpd 2> /dev/null > /dev/null if [ $? -eq 0 ]; then echo "Restarting system Apache..." sudo pkill -9 -f /usr/sbin/httpd sudo /usr/sbin/apachectl -k restart > /dev/null 2>&1 fi pgrep -f /usr/local/"Cellar|opt"/*/httpd 2> /dev/null > /dev/null if [ $? -eq 0 ]; then echo "Restarting homebrew Apache..." sudo pkill -9 -f /usr/local/"Cellar|opt"/*/httpd sudo /usr/local/bin/apachectl -k restart > /dev/null 2>&1 fi # pgrep -x httpd 2> /dev/null > /dev/null # if [ $? -eq 0 ]; then # echo "Restarting non-root homebrew Apache..." # httpd -k restart > /dev/null 2>&1 # fi echo "Done." # Show PHP CLI version for verification. echo && php -v else echo "PHP version $majorNew.$minorNew was not found." echo "Try `brew install php${newversion}` first." exit 1 fi
通過 open -e /usr/local/bin/sphp 打開 sphp 文件,并將上面的代碼復(fù)制進(jìn)入,然后賦予可執(zhí)行權(quán)限:
$ chmod +x /usr/local/bin/sphp3.4. 檢測(cè) PATH 路徑
Homebrew 在安裝程序的時(shí)候一般會(huì)把程序的可執(zhí)行文件加入到 /usr/local/bin 和 /usr/local/sbin 這兩個(gè)目錄里面。通過下面的命令可以快速測(cè)試可執(zhí)行文件路徑是否正確:
$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
如果沒有看到類似的輸出,你可能需要手動(dòng)添加這些路徑。添加下面的代碼到 shell 的配置文件中(不同的 shell 可能需要將路徑添加到不同的配置文件中,如 ~/.profile ~/.bash_profile ~/.zshrc)。如果使用的是 macOS 默認(rèn)的 shell,則添加到 ~/.profile (若沒有這個(gè)文件,則創(chuàng)建它);如果使用的是 zsh,則添加到 ~/.zshrc:
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
在添加路徑到配置文件的時(shí)候,最好關(guān)閉其他不相關(guān)的終端,因?yàn)槟承╅_著的終端可能會(huì)對(duì)路徑造成一些奇怪的問題。添加完成后,配置會(huì)在下次打開終端的時(shí)候生效?;蛘呤褂孟旅娴拿?,重新載入配置文件使其立即生效:
# 若使用的是默認(rèn)終端 $ source ~/.profile # 或如果使用的是 zsh $ source ~/.zshrc3.5. Apache 和 PHP 的配置 - 第二部分
盡管之前我們已經(jīng)配置好了 Apache 和 PHP,現(xiàn)在我們還需要修改配置文件,來使用 PHP switcher script 切換 PHP 的版本。繼續(xù)打開 /usr/local/etc/apache2/2.4/httpd.conf 然后找到 LoadModule php 所在的行:
然后注釋掉正在使用的 LoadModule:
#LoadModule php5_module /usr/local/opt/php55/libexec/apache2/libphp5.so #LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so #LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so #LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
并在下面添加:
# Brew PHP LoadModule for `sphp` switcher #LoadModule php5_module /usr/local/lib/libphp5.so LoadModule php7_module /usr/local/lib/libphp7.so
如果你安裝了 PHP 5.5 或 5.6 等,注釋掉的 php5_module 同樣也非常重要。PHP switcher script 會(huì)自動(dòng)注釋或取消注釋 PHP module。
3.6 PHP 切換測(cè)試完成上面的步驟之后,就可以使用 sphp 命令來切換 PHP 版本了。sphp 的參數(shù)是由兩個(gè)數(shù)字組合成的兩位數(shù):
$ sphp 5 PHP version 55 found Unlinking old binaries... Linking new binaries... Linking /usr/local/Cellar/php55/5.5.38_11... 17 symlinks created Linking new modphp addon... /usr/local/lib/libphp5.so Fixing LoadModule... Updating version file... Restarting homebrew Apache... Done. PHP 5.5.38 (cli) (built: Dec 28 2016 15:48:28) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
然后訪問 http://localhost:7070/info.php,可以看到 PHP 版本已經(jīng)正確切換:
3.6.1 ISSUE Unable to load dynamic library "/usr/local/opt/php56-mongo/mongo.so"我在切換版本的時(shí)候也遇到了問題:
$ sphp 71 ... Warning: PHP Startup: Unable to load dynamic library "/usr/local/opt/php56-mongo/mongo.so" - dlopen(/usr/local/opt/php56-mongo/mongo.so, 9): image not found in Unknown on line 0 PHP 5.6.29 (cli) (built: Dec 28 2016 15:58:30) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
根據(jù)錯(cuò)誤提示,大概是因?yàn)?php56-mongo 這個(gè)擴(kuò)展沒有,于是我使用 brew 安裝了 php56-mongo 問題就解決了:
$ brew install php56-mongo3.7 更新 PHP 和其他通過 Brew 安裝的程序
使用 brew 更新 PHP 和其他通過 brew 安裝的程序非常簡(jiǎn)單,第一步是更新 brew 本身:
$ brew update
升級(jí)后將會(huì)列出一系列可測(cè)回歸內(nèi)心的程序,然后使用下面的命令更新:
$ brew upgrade3.8 使用具體的/最新的 PHP 版本
當(dāng)我們使用 PHP 的時(shí)候,每次我們只使用了其中一個(gè)版本,并且只有當(dāng)前使用的版本會(huì)更新到最新版本。可以使用下面的命令查看當(dāng)前 PHP 版本:
$ php -v
可以使用下面的命令查看具體的可用 PHP 版本:
$ brew info php55 homebrew/php/php55: stable 5.5.38 (bottled), HEAD PHP Version 5.5 https://php.net Conflicts with: php53, php54, php56, php70, php71 /usr/local/Cellar/php55/5.5.38_11 (329 files, 47.7M) Built from source on 2016-12-28 at 15:49:20 with: --with-httpd24
比如上面的 PHP 5.5 版本的只有一個(gè)可用版本 5.5.38。
然后可以使用 brew 來切換到一個(gè)具體的版本:
$ brew switch php55 5.5.38
到此,這篇文章就結(jié)束了。你已經(jīng)完成掌握了 Apache 2.4 和各個(gè)版本 PHP 的安裝,并且能夠在 5.5 5.6 7.0 7.1 中快速切換 PHP 版本。原作者還寫了兩外兩篇文章,分別是 macOS 10.12 Sierra Apache Setup: MySQL, APC & More 和 macOS 10.12 Sierra Apache Setup: SSL,近期內(nèi)我也會(huì)將它們翻譯成中文,并加入自己的實(shí)踐總結(jié)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/35788.html
摘要:上面的命令會(huì)從源碼下載,并進(jìn)行編譯安裝。我在安裝的時(shí)候遇到了一個(gè)錯(cuò)誤最終在上找到了該。其原因可能是的沒有正確安裝。第二行命令的作用是賦予可執(zhí)行權(quán)限。 本文主要內(nèi)容翻譯自《macOS 10.12 Sierra Apache Setup: Multiple PHP Versions》,并加入了自己的實(shí)踐。 前言:每次搭建開發(fā)環(huán)境真的是一件很麻煩的事情,但隨著時(shí)間的推移和系統(tǒng)環(huán)境的差異,網(wǎng)上...
摘要:安裝是蘋果出品的包含一系列工具及庫(kù)的開發(fā)軟件。通過安裝最新版本的。如果你的是之前的版本的話,在你編譯的時(shí)候會(huì)提示你更新版本我們一般不會(huì)用來開發(fā)項(xiàng)目。命令行工具作為的一部分,包含了編譯器。 showImg(https://segmentfault.com/img/bVbsoUj?w=640&h=426); 用了快三年的Mac Pro出現(xiàn)問題,蘋果公司幫忙換了一臺(tái)全新的,所以沒辦法,只能重...
摘要:安裝是蘋果出品的包含一系列工具及庫(kù)的開發(fā)軟件。通過安裝最新版本的。如果你的是之前的版本的話,在你編譯的時(shí)候會(huì)提示你更新版本我們一般不會(huì)用來開發(fā)項(xiàng)目。命令行工具作為的一部分,包含了編譯器。 showImg(https://segmentfault.com/img/bVbsoUj?w=640&h=426); 用了快三年的Mac Pro出現(xiàn)問題,蘋果公司幫忙換了一臺(tái)全新的,所以沒辦法,只能重...
摘要:一下載擴(kuò)展包及依賴下載地址下載地址選擇版本,選擇版本二安裝依賴注涉及創(chuàng)建文件夾及寫入文件等操作,需有對(duì)應(yīng)權(quán)限,本文其他地方不再贅述。 一、下載擴(kuò)展包及依賴 libmemcached下載地址https://launchpad.net/libmemc... php-memcached下載地址 (PHP5.6選擇2.2.0版本,PHP7選擇3.X版本)http://pecl.php.net/...
閱讀 3027·2023-04-26 00:32
閱讀 511·2019-08-30 15:52
閱讀 2118·2019-08-30 15:52
閱讀 3363·2019-08-30 15:44
閱讀 3292·2019-08-30 14:09
閱讀 1425·2019-08-29 15:15
閱讀 3404·2019-08-28 18:12
閱讀 1088·2019-08-26 13:55