首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Windows 環境手動搭建 WAMP 開發環境:Apache、MySQL、PHP 深度配置與優化指南

     編輯:PHP 相關知識

Windows 環境手動搭建 WAMP 開發環境:Apache、MySQL、PHP 深度配置與優化指南

雖然有 XAMPP、WampServer 等整合包,但手動搭建能深度理解組件交互、精確控制版本、避免整合包臃腫與版本鎖定。本文提供生產級手動部署全流程。

軟體版本規劃(以 64 位為例)

組件建議版本下載來源
Apache2.4.x (VC15)Apache Lounge
PHP8.1+ (VS16, Thread Safe)PHP for Windows
MySQL8.0+ (Community)MySQL 官網
VC++ RedistributableVS2015-2022 (x64)Microsoft 官網

關鍵: Apache、PHP 編譯器版本必須一致(VC15/VS16),Thread Safe 版本用於 Apache 模組模式。

目錄結構規劃

D:\dev\
├── Apache24\
├── PHP81\
├── MySQL80\
├── wwwroot\          # 網站根目錄
└── logs\             # 統一日誌目錄

第一步:安裝 VC++ Redistributable

下載並安裝 vc_redist.x64.exe,否則 Apache/PHP 啟動報 VCRUNTIME140.dll not found。

第二步:部署 Apache

  1. 解壓至 D:\dev\Apache24
  2. 編輯 conf/httpd.conf 關鍵修改:
# 1. 服務器根目錄
Define SRVROOT "D:/dev/Apache24"
ServerRoot "${SRVROOT}"

# 2. 監聽埠
Listen 80

# 3. 載入模組(按需啟用)
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule headers_module modules/mod_headers.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule ssl_module modules/mod_ssl.so

# 4. 網站根目錄
DocumentRoot "D:/dev/wwwroot"

    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted


# 5. 目錄索引
DirectoryIndex index.php index.html index.htm

# 6. PHP 模組整合(關鍵)
LoadModule php_module "D:/dev/PHP81/php8apache2_4.dll"
PHPIniDir "D:/dev/PHP81"
AddType application/x-httpd-php .php .php7 .phtml
AddType application/x-httpd-php-source .phps

# 7. 日誌
ErrorLog "D:/dev/logs/apache_error.log"
CustomLog "D:/dev/logs/apache_access.log" combined
  1. 測試配置:D:\dev\Apache24\bin\httpd.exe -t
  2. 安裝服務:D:\dev\Apache24\bin\httpd.exe -k install -n "Apache24"
  3. 啟動:net start Apache24 或 httpd -k start

第三步:部署 PHP

  1. 解壓至 D:\dev\PHP81
  2. 複製 php.ini-development 為 php.ini
  3. 編輯 php.ini 關鍵配置:
; 1. 擴展目錄
extension_dir = "D:/dev/PHP81/ext"

; 2. 啟用核心擴展(去掉分號)
extension=curl
extension=gd
extension=mbstring
extension=mysqli
extension=pdo_mysql
extension=openssl
extension=zip
extension=intl
extension=fileinfo
extension=redis       ; 需額外下載 dll
extension=xdebug      ; 開發環境建議

; 3. 錯誤報告
display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On
error_log = "D:/dev/logs/php_error.log"

; 4. 時區
date.timezone = Asia/Shanghai

; 5. 上傳限制
file_uploads = On
upload_max_filesize = 50M
post_max_size = 60M

; 6. Session
session.save_handler = files
session.save_path = "D:/dev/tmp/session"

; 7. OPcache(開發環境關閉,生產開啟)
opcache.enable = 0

; 8. Xdebug 3 配置
[xdebug]
zend_extension = "D:/dev/PHP81/ext/php_xdebug.dll"
xdebug.mode = develop,debug
xdebug.start_with_request = yes
xdebug.client_port = 9003
xdebug.client_host = 127.0.0.1
  1. 建立 D:\dev\tmp\session 目錄,確保寫入權限
  2. 將 D:\dev\PHP81 加入系統 PATH 環境變數
  3. 驗證:php -v、php -m

第四步:部署 MySQL

  1. 執行 MSI 安裝程式,選擇 Custom 安裝至 D:\dev\MySQL80
  2. 配置類型:Standalone / Development
  3. 認證方式:Use Strong Password Encryption
  4. Root 密碼設定,建立開發用戶
  5. Windows 服務:命名 MySQL80,開機自啟
  6. 編輯 my.ini 優化配置:
[mysqld]
basedir = D:/dev/MySQL80
datadir = D:/dev/MySQL80/data
port = 3306
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
default-storage-engine = INNODB
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

# 開發環境適度配置
innodb_buffer_pool_size = 512M
innodb_log_file_size = 128M
innodb_flush_log_at_trx_commit = 2
max_connections = 200
tmp_table_size = 64M
max_heap_table_size = 64M

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4
  1. 初始化資料目錄(安裝程式自動),啟動服務:net start MySQL80
  2. 測試連線:mysql -u root -p

第五步:驗證整合

  1. 建立測試檔 D:\dev\wwwroot\info.php:<?php phpinfo(); ?>
  2. 瀏覽器訪問 https://localhost/info.php,確認:
  • Apache 版本、模組載入狀態
  • PHP 版本、擴展列表、Loaded Configuration File 指向正確 php.ini
  • MySQLi / PDO_MySQL 擴展已載入
  1. 建立測試檔 db_test.php 驗證資料庫連線:
<?php
$mysqli = new mysqli('127.0.0.1', 'root', 'your_password', 'mysql');
if ($mysqli->connect_errno) {
    die('Connect failed: ' . $mysqli->connect_error);
}
echo 'MySQL 連線成功!版本: ' . $mysqli->server_info;
$mysqli->close();

第六步:開發效率優化

1. 虛擬主機配置(多專案隔離)

# httpd-vhosts.conf

    ServerName project1.local
    DocumentRoot "D:/dev/wwwroot/project1/public"
    
        AllowOverride All
        Require all granted
    
    ErrorLog "D:/dev/logs/project1_error.log"
    CustomLog "D:/dev/logs/project1_access.log" combined



    ServerName project2.local
    DocumentRoot "D:/dev/wwwroot/project2/public"
    ...

編輯 C:\Windows\System32\drivers\etc\hosts:

127.0.0.1 project1.local
127.0.0.1 project2.local

2. Composer 全域安裝

# 下載 composer.phar 至 D:\dev\PHP81
# 建立 composer.bat
@echo off
php D:\dev\PHP81\composer.phar %*

將 D:\dev\PHP81 加入 PATH,命令列直接使用 composer。

3. IDE 整合(VS Code / PhpStorm)

  • PHP 可執行檔:D:\dev\PHP81\php.exe
  • Xdebug 埠:9003,路徑映射 D:/dev/wwwroot ↔ /var/www/html(容器場景)
  • 程式碼風格:PSR-12,PHP CS Fixer 整合

常見問題排查

現象原因解決
Apache 啟動即退出埠佔用 / 配置錯誤 / 缺少 DLLhttpd -t 檢查、netstat -ano | findstr :80、Dependency Walker 檢查 DLL
PHP 模組載入失敗VC++ 版本不匹配 / TS/NTS 混用確認 Apache/PHP 同為 VC15/VS16 + Thread Safe
MySQL 連線失敗服務未啟動 / 埠錯誤 / 防火牆 / 認證插件net start MySQL80、檢查 3306、ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pwd'
.htaccess 不生效AllowOverride Nonehttpd.conf 設 AllowOverride All
中文亂碼字符集不一致PHP/MySQL/HTML/資料庫表統一 utf8mb4

遷移到生產環境的關鍵調整

[ ] php.ini: display_errors=Off, opcache.enable=1, opcache.jit=1255
[ ] Apache: MPM Event, mod_cache/mod_deflate, SSL/TLS, 安全標頭
[ ] MySQL: innodb_flush_log_at_trx_commit=1, 只讀副本, 備份策略
[ ] PHP-FPM 替代 mod_php (高併發場景)
[ ] 容器化部署

手動搭建 WAMP 雖初期投入較大,但賦予你對運行環境的完全掌控力,是進階 PHP 工程師向架構師邁進的必修課。建議將配置檔納入版本控制,構建專屬的標準化開發環境規格。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved