Benyi Hsia

我是Benyi,這裡存放關於資訊科技的文章

macOS Sierra 安裝 php7 及 MongoDB driver

| Comments

一直以來,都是使用 Mac 內建的 apache2 及 PHP 模組。
其實只要打幾個勾,去掉 LoadMoudule 前面的註解,設定一下就可以用了。

不過,因為 Laravel 對於系統的要求愈來愈高,
加上我的 Mac 內建的是 5.5 版,再也無法安裝 Laravel 5.2 以上的版本。

也因為最近因為要使用 jessenger/laravel-mongodb 這個套件,

我利用 Homebrew 安裝完 php70
在內建的 apache 準備 LoadModule ,結果找不到這個 .so 檔的路徑

又 MongoDB 的 driver 不知道怎麼搞的,
在 brew install 的結果顯示 already installed 但在 phpinfo() 裡面又找不到。
(而且還有 php55-mongophp55-mongodb 這兩種..)

反正就是經過種種原因,覺得乾脆移除內建的 apache 再把全部東西都用 Homebrew 安裝好了。

以上抱怨完之後,把過程寫下來希望可以幫助到其他人= =||

1. 移除內建的 apache

先讓 apache 暫停服務
sudo apachectl stop
移除內建的 apache
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null

2. 使用 Homebrew 安裝所要的軟體

安裝 apache (apache 在這邊叫作 httpd)
brew install httpd24
安裝 php 7

-with-apache 很重要一定要加,因為加上去才會自動幫我們把 LoadModule 設定加到 httpd.conf 裡面
(不然還要自己找 php 路徑)

brew install php70 --with-apache
安裝 MongoDB 的 PHP 驅動
brew install php70-mongodb --with-apache

3. 重新啟動 apache

sudo apachectl restart

大致上已經完成,但是如果打開網頁的話,PHP 可是會直接噴出程式碼的。
所以我們還要設定一下 httpd.conf

4. 設定 apache

打開 httpd.conf 檔案
 sudo vim /usr/local/etc/apache2/2.4/httpd.conf
去除 php 行頭的註解

如果剛剛在安裝的時候,有使用 -with-apache 參數,
那麼你應該可以找到這行,而且是直接啟用的狀態而無需自己去除註解。

LoadModule php7_module        /usr/local/Cellar/php70/7.0.15_8/libexec/apache2/libphp7.so
監聽 80 port

使用 brew 安裝的 apache 會預設監聽 8080 port
看你的需要,如果你想要直接使用 80 而不想在網址後面加上 :8080 那你可以更改設定

Listen 80
增加 PHP 關聯

httpd.conf 的任意處,加上

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

5. 重新啟動 apache

sudo apachectl restart

6. 大工告成

打開終端機,輸入

php --version

應該可以直接看到類似如以下的結果

PHP 7.0.15 (cli) (built: Feb 25 2017 18:17:23) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies

Comments

comments powered by Disqus