macOS php開發環境安裝

Snoopy
史努比的第二個家:筆記本
7 min readApr 6, 2020

弄了好幾次升級,決定放棄內建的方式,自行安裝php開發環境。

Apache安裝篇

  1. 安裝Brew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

2. 安裝Mojave Required Libraries

brew install openldap libiconv

3. 停用Apache

1. 停用apache 
sudo apachectl stop
2. 移除現有apache服務
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null

4. 改用Brew的Apache

brew install httpd

5. 啟動新的Apache

sudo brew services start httpd

6. 使用瀏覽器打開localhost的8080 port,測試看看是否正常出現經典的『It works!』畫面。

http://localhost:8080

Apache設定篇

  1. 用文字編輯器開啟以下檔案:
/usr/local/etc/httpd/httpd.conf

2. 替換port,瀏覽器預設的是80 port,這樣就可以直接以localhost瀏覽。

Listen 8080
改為:
Listen 80

3. 替換網站檔案資料夾。注意:請把user_name換成你現在使用者的名稱!

DocumentRoot "/usr/local/var/www"
改為
DocumentRoot "/Users/user_name/Sites"

4. 替換存取權限路徑,一樣改為你的預設網頁路徑

<Directory "/usr/local/var/www">
改為
<Directory "/Users/user_name/Sites">

5. 在步驟4的設定檔區塊,替換以下權限

AllowOverride None
改為
AllowOverride All

6. 搜尋mod_rewrite.so,將最前面的#字號刪除

#LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
改為
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

7. 替換使用者群組
(user_name要換成你mac中的使用者名稱喔)

User _www
Group _www
改為User user_name
Group staff

8. 設定server名稱

#ServerName www.example.com:8080
改為
ServerName localhost

9. 重啟

sudo apachectl -k restart

PHP安裝篇

恩,沒錯,php還沒裝好。

  1. 更新brew。使用以下命令加入一些 brew 不再正式支援的套件
    否則你安裝brew reinstall php@7.0之類的會失敗(5.6~7.x通常都會失敗)
brew tap exolnet/homebrew-deprecated

2. 安裝php,看你需求端是要用哪一版,修改@符號後面的數字

brew install php@7.4

3. 編輯設定檔(版號要改成你剛才安裝的php版本)

/usr/local/etc/php/7.4/php.ini

4. 注意一下此步驟,假如你已經有裝過舊版才需要。

其中7.0是我這邊舊版,7.4則是我想要使用的新版。
這個命令可以無限次使用,來切換版本。

(這表示步驟2的php版本也可以安裝各種你需要的版本)

brew unlink php@7.0 && brew link --force --overwrite php@7.4

5. 重啟Apache

sudo apachectl -k restart

6. 輸入以下命令查看目前的版本

php -v

7. 假如以上方式失敗會導致步驟6看不到目前版本,以下提供幾個方法偵錯

這個命令可以重新連結php,假如有問題他上面會寫
brew link php
這個命令可以幫忙檢查是否你的brew環境有問題
brew doctor
若是出現dyld: Library not loaded開頭的錯誤,可查看後面的lib哪一支出問題
例如我出現的是openssl錯誤,使用以下語法來重新安裝可以解決openssl導致的錯誤
brew reinstall openssl
也有可能你現有的舊版php有問題,先移除再按照以上方式重新安裝。例如:
brew uninstall php@7.1

設定PHP

  1. 開啟apache設定檔
/usr/local/etc/httpd/httpd.conf

2. 根據你的php版本複製以下語法貼到LoadModule段落的最末端,並把前面的#字號刪除

#LoadModule php5_module /usr/local/opt/php@5.6/lib/httpd/modules/libphp5.so
#LoadModule php7_module /usr/local/opt/php@7.0/lib/httpd/modules/libphp7.so
#LoadModule php7_module /usr/local/opt/php@7.1/lib/httpd/modules/libphp7.so
#LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so
#LoadModule php7_module /usr/local/opt/php@7.3/lib/httpd/modules/libphp7.so
#LoadModule php7_module /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so

3. 權限控制,替換

<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

改為以下來支援.php副檔名格式

<IfModule dir_module>
DirectoryIndex kick.php index.php index.html
</IfModule>

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

4. 現在可以到你的網頁測試了,以下是會印出php預設資訊的語法,儲存至index.php即可測試

<?php phpinfo();?>

--

--