本地開發配置虛擬主機、解決權限問題、實現局域網多設備訪問是 PHP 開發者必備技能。本文記錄 WAMP 環境下的完整配置流程與坑點總結。
D:/wamp/www/CrashServercrash.com (本地開發用)# 1. 啟用虛擬主機配置
Include conf/extra/httpd-vhosts.conf
# 2. 默認目錄權限 (關鍵!)
<Directory "D:/wamp/www">
Options Indexes FollowSymLinks
AllowOverride All
Require local # 僅本地訪問,局域網需改為 Require all granted
</Directory>
# 3. 啟用 rewrite 模塊
LoadModule rewrite_module modules/mod_rewrite.so
# 必須聲明
NameVirtualHost *:80
# 1. 保留 localhost 對應默認目錄
<VirtualHost *:80>
DocumentRoot "D:/wamp/www"
ServerName localhost
<Directory "D:/wamp/www">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
# 2. 項目虛擬主機
<VirtualHost *:80>
DocumentRoot "D:/wamp/www/CrashServer"
ServerName crash.com
ServerAlias www.crash.com
# 目錄權限 (項目不在 www 下時必須顯式配置)
<Directory "D:/wamp/www/CrashServer">
Options Indexes FollowSymLinks
AllowOverride All
# Apache 2.4 語法
Require all granted
# Apache 2.2 舊語法 (兼容)
Order Allow,Deny
Allow from All
</Directory>
# 錯誤/訪問日誌分離 (推薦)
ErrorLog "logs/crash.com-error.log"
CustomLog "logs/crash.com-access.log" common
</VirtualHost>
# C:\Windows\System32\drivers\etc\hosts (需管理員權限編輯) 127.0.0.1 localhost 127.0.0.1 crash.com 127.0.0.1 www.crash.com
# 錯誤配置
<VirtualHost *:80>
DocumentRoot "E:/Projects/MyApp"
ServerName myapp.local
</VirtualHost>
# 缺少 權限授予 → 403
# 正確配置
<VirtualHost *:80>
DocumentRoot "E:/Projects/MyApp"
ServerName myapp.local
<Directory "E:/Projects/MyApp">
Require all granted # Apache 2.4 必須
</Directory>
</VirtualHost>
| 版本 | 語法 | 示例 |
|---|---|---|
| 2.4+ | Require | Require all granted / Require ip 192.168.1 |
| 2.2 | Order/Allow/Deny | Order Allow,Deny / Allow from all |
建議雙寫兼容,避免版本遷移報錯。
Require all grantedhttps://電腦局域網IP# 檢查 80 端口佔用 netstat -ano | findstr :80 # PID 4 通常是 System (IIS/World Wide Web Publishing Service) # 關閉 IIS 或修改 Apache 端口 Listen 8080
<VirtualHost *:80>
ServerName dev.project.com
DocumentRoot "/var/www/project/public"
# 安全頭
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
# PHP-FPM 代理 (生產環境推薦)
# ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/project/public/$1
<Directory "/var/www/project/public">
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
# 前端路由支持 (Vue/React/Laravel)
FallbackResource /index.php
</Directory>
# 靜態資源緩存
<FilesMatch "\.(css|js|png|jpg|jpeg|gif|ico|svg|woff2?)$">
ExpiresActive On
ExpiresDefault "access plus 1 year"
Header set Cache-Control "public, immutable"
</FilesMatch>
# 訪問/錯誤日誌
ErrorLog ${APACHE_LOG_DIR}/project_error.log
CustomLog ${APACHE_LOG_DIR}/project_access.log combined
</VirtualHost>
httpd -t (Syntax OK)https://crash.com 正常https://localhost 仍顯示 WAMP 首頁標準化的虛擬主機配置流程,能讓開發環境「開箱即用」,避免環境差異導致的「我機器上能跑」問題。