本指南旨在於 MacOS 上使用 Homebrew 設定可運作的 Apache、PHP 和 MySQL,以協助在本地端開發網站。還有其他可用的解決方案,例如 MAMP,它類似於 Windows 上的 WAMP,本指南的目的是讓我們自己設定所有內容,並了解每個部分如何運作以及它們如何作為一個完整的解決方案協同工作。
1. 讓 Apache 運作
通常在 MacOS 上,有內建的 Apache 並且已經可以使用。要找到 Apache,可以嘗試運行以下命令。
brew services restart httpd
可以找到以下輸出
Stopping `httpd`... (might take a while)
==> Successfully stopped `httpd` (label: homebrew.mxcl.httpd)
==> Successfully started `httpd` (label: homebrew.mxcl.httpd)
要確認它正在運行,可以發出以下命令
ps -ef | grep httpd
應該會看到以下類似的輸出
501 13800 1 0 11:43PM ?? 0:01.71 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
501 13805 13800 0 11:43PM ?? 0:00.02 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
501 13806 13800 0 11:43PM ?? 0:00.01 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
501 13807 13800 0 11:43PM ?? 0:00.01 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
501 13808 13800 0 11:43PM ?? 0:00.02 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
501 13809 13800 0 11:43PM ?? 0:00.01 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
501 13818 13800 0 11:43PM ?? 0:00.05 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
501 13820 13800 0 11:43PM ?? 0:00.12 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
501 13821 13800 0 11:43PM ?? 0:00.01 /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
501 26586 11613 0 9:52AM ttys018 0:00.01 grep httpd
如果 httpd 正在運行,您應該會看到一些進程正在顯示。
接下來,我們需要找到配置文件的位置,以便稍後可以對其進行更改以使用 PHP。運行以下命令。
httpd -V | grep SERVER_CONFIG_FILE
輸出應該會告訴您位置。
pike6@MacBook-Pro www % httpd -V | grep SERVER_CONFIG_FILE
-D SERVER_CONFIG_FILE="/opt/homebrew/etc/httpd/httpd.conf"
在這種情況下,它位於/opt/homebrew/etc/httpd/httpd.conf
2. 安裝 PHP
在本指南中,我們將使用 PHP 8.3,要安裝 PHP,可以運行以下命令
brew install [email protected]
這將在您的機器上安裝 PHP 8.3,一旦安裝完成,可以運行以下命令將 php
命令添加到 PATH。
echo 'export PATH="/opt/homebrew/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/opt/homebrew/opt/[email protected]/sbin:$PATH"' >> ~/.zshrc
接下來運行 source 命令以使更改生效。
source ~/.zshrc
驗證 php 版本是否為 8.3
php --version
輸出
PHP 8.3.17 (cli) (built: Feb 11 2025 22:03:03) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.17, Copyright (c) Zend Technologies
with Zend OPcache v8.3.17, Copyright (c), by Zend Technologies
3. 安裝 MySQL
安裝 MySQL 的命令非常簡單,
brew install mysql
安裝完成後,可以運行以下命令來啟動 mysql 服務。
brew services start mysql
要訪問資料庫,請發出以下命令
mysql -u root -p
當提示輸入密碼時,只需輸入 ENTER,您應該能夠登錄到 mysql shell。
如果您想保護您的 mysql 訪問,可以安裝以下內容來設置 root 密碼(建議的步驟,但對於本地環境來說不是必要的)。
mysql_secure_installation
4. 更新 Apache 配置
如果我們想要讓 Apache、PHP 和 MySQL 一起工作,我們需要對步驟 1 中的 http 配置進行更改。以下更改需要對/opt/homebrew/etc/httpd/httpd.conf
進行。
- 添加以下行以啟用 php 模組
LoadModule php_module /opt/homebrew/opt/[email protected]/lib/httpd/modules/libphp.so
- 更新 DocumentRoot 和 Directory 到您網站的根目錄
DocumentRoot "/Users/pike6/work/project/website/www" <Directory "/Users/pike6/work/project/website/www"> AllowOverride All Require all granted </Directory
- (可選)如果您想在本地設置多個網站,您可能需要啟用虛擬主機。這可以通過取消註釋來完成
Include /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf
- 然後編輯
/opt/homebrew/etc/httpd/extra/httpd-vhosts.conf
,根據您的需要添加一些條目,如下所示。
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/Users/pike6/work/project/website/www" ServerName website1.localhost ErrorLog "/opt/homebrew/var/log/httpd/www-error.log" CustomLog "/opt/homebrew/var/log/httpd/www-access.log" common </VirtualHost> <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/Users/pike6/work/project/website/website2" ServerName website2.localhost ErrorLog "/opt/homebrew/var/log/httpd/website2-error.log" CustomLog "/opt/homebrew/var/log/httpd/website2-access.log" common </VirtualHost>
- 編輯 /etc/hosts,添加以下地址映射,以便上面的新 ServerName 可以映射到 127.0.0.1
127.0.0.1 website1.localhost 127.0.0.1 website2.localhost
- 在
/opt/homebrew/etc/httpd/httpd.conf
中,為每個新網站添加以下內容。
<Directory "/Users/pike6/work/project/website/website1"> AllowOverride All Require all granted </Directory> <Directory "/Users/pike6/work/project/website/website2"> AllowOverride All Require all granted </Directory>
- (可選)如果您想在本地設置多個網站,您可能需要啟用虛擬主機。這可以通過取消註釋來完成
- 根據您的需要,您可能需要取消註釋以下內容,因為您可能在您的
.htaccess
中啟用了一些重寫引擎。
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
現在通過以上步驟,重新啟動 httpd 服務並使用website1.locahost
訪問您的網站。它應該可以工作。
Bonus 1
如果您還想要 phpMyAdmin,可以運行以下命令
brew install phpmyadmin
安裝後,將以下內容添加到 httpd conf /opt/homebrew/etc/httpd/httpd.conf
。
Alias /phpmyadmin /opt/homebrew/share/phpmyadmin
<Directory /opt/homebrew/share/phpmyadmin/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
重新啟動 httpd 服務
brew services restart httpd
Bonus 2
如果您在啟動 httpd 服務後沒有找到您的網站工作,您可以首先檢查服務是否啟動並在您指定的端口上監聽。
lsof -i :80
如果端口沒有監聽,則表示服務沒有成功啟動。您可以檢查是否給予了正確的用戶權限或 httpd 所有權。例如,您可以檢查/opt/homebrew/opt/httpd/bin/httpd
的所有者,如果它不是您的用戶名,您可能無法僅使用brew
啟動它,您可能需要sudo brew
。或者,如果只有您擁有該機器,您可以將所有者更改為您的用戶名。