macOS php開發環境安裝
弄了好幾次升級,決定放棄內建的方式,自行安裝php開發環境。
Apache安裝篇
- 安裝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設定篇
- 用文字編輯器開啟以下檔案:
/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還沒裝好。
- 更新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
- 開啟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();?>