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

PHP 開發環境搭建全紀錄:Windows + Apache + PHP + MySQL 手動配置指南

     編輯:PHP 相關知識

前言

雖然現代開發推薦使用 Docker、XAMPP、Laravel Valet 等一鍵方案,但理解手動配置 Apache + PHP + MySQL 的每一步,有助於排查環境問題、理解生產部署原理。本文記錄 Windows 下手動搭建經典 LAMP(WAMP) 環境的完整步驟。

軟體版本與下載

組件建議版本下載來源
Apache2.4.x (VC15/VC16)https://www.apachelounge.com/download/
PHP8.2.x (Non Thread Safe for Apache FCGI / Thread Safe for mod_php)https://windows.php.net/download/
MySQL8.0.x Communityhttps://dev.mysql.com/downloads/mysql/
Visual C++ RedistributableVC15/VC16 (x64)Microsoft 官網

關鍵選擇: Apache 2.4 + PHP 8 建議用 PHP-FPM (FastCGI) 模式(Non Thread Safe),而非傳統 mod_php (Thread Safe),效能更好、穩定性更高。

目錄結構規劃

D:/dev/
├── Apache24/          # Apache 安裝目錄
├── php/               # PHP 解壓目錄
├── mysql/             # MySQL 安裝目錄 (或預設 Program Files)
├── www/               # Web 根目錄 (DocumentRoot)
│   ├── project1/
│   └── project2/
└── logs/              # 統一日誌目錄
    ├── apache/
    └── php/

步驟 1:安裝 Apache

  1. 解壓 Apache 到 D:/dev/Apache24
  2. 編輯 D:/dev/Apache24/conf/httpd.conf 關鍵修改:
    # 監聽端口 (避開 80 若被佔用)
    Listen 8080
    
    # 服務器名稱
    ServerName localhost:8080
    
    # 文檔根目錄
    DocumentRoot "D:/dev/www"
    
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    
    
    # 預設首頁文件 (加入 index.php)
    
        DirectoryIndex index.php index.html index.htm
    
    
    # 載入模組 (確保啟用)
    LoadModule rewrite_module modules/mod_rewrite.so
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so  # PHP-FPM 必需
    LoadModule headers_module modules/mod_headers.so
    LoadModule deflate_module modules/mod_deflate.so
    
  3. 測試配置:D:/dev/Apache24/bin/httpd.exe -t 應顯示 Syntax OK
  4. 安裝為服務:管理員 CMD 執行 D:/dev/Apache24/bin/httpd.exe -k install -n "Apache24"
  5. 啟動服務:net start Apache24 或服務管理器
  6. 驗證:瀏覽器訪問 https://localhost:8080 顯示 "It works!"

步驟 2:配置 PHP (PHP-FPM 模式)

  1. 解壓 PHP 到 D:/dev/php (選 Non Thread Safe 版)
  2. 複製 php.ini-development 為 php.ini
  3. 編輯 php.ini 關鍵設定:
    ; 擴展目錄
    extension_dir = "ext"
    
    ; 啟用常用擴展 (去掉分號)
    extension=curl
    extension=fileinfo
    extension=gd
    extension=gettext
    extension=mbstring
    extension=mysqli
    extension=openssl
    extension=pdo_mysql
    extension=redis  ; 需額外下載 php_redis.dll
    
    ; 時區
    date.timezone = Asia/Taipei
    
    ; 錯誤報告 (開發環境)
    error_reporting = E_ALL
    display_errors = On
    log_errors = On
    error_log = "D:/dev/logs/php/php_error.log"
    
    ; 會話
    session.save_path = "D:/dev/php/session"
    ; 建立此目錄
    
    ; 上傳
    file_uploads = On
    upload_max_filesize = 50M
    post_max_size = 50M
    
    ; Opcache (開發可關閉,生產必開)
    opcache.enable = 0
    ; opcache.enable_cli = 1
    
  4. 建立 PHP-FPM 配置 D:/dev/php/php-fpm.conf:
    ; 全域設定
    [global]
    pid = run/php-fpm.pid
    error_log = D:/dev/logs/php/php-fpm.log
    log_level = notice
    
    ; 池設定
    [www]
    listen = 127.0.0.1:9000  ; 或 Unix socket (Windows 不支援)
    listen.owner = nobody
    listen.group = nobody
    listen.mode = 0660
    
    user = nobody
    group = nobody
    
    pm = dynamic
    pm.max_children = 20
    pm.start_servers = 3
    pm.min_spare_servers = 2
    pm.max_spare_servers = 5
    pm.max_requests = 500
    
    ; 環境變數
    env[PATH] = /usr/local/bin:/usr/bin:/bin
    env[TMP] = /tmp
    env[TMPDIR] = /tmp
    env[TEMP] = /tmp
    
  5. 啟動 PHP-FPM:雙擊 D:/dev/php/php-fpm.exe (或建立服務 php-fpm.exe --fpm-config php-fpm.conf --install)
  6. 驗證:telnet 127.0.0.1 9000 或建立 D:/dev/www/phpinfo.php 內容 <?php phpinfo(); ?>

步驟 3:Apache 整合 PHP-FPM

編輯 httpd.conf 或建立 conf/extra/php-fpm.conf 並 Include:

# 代理 PHP 請求到 PHP-FPM

    SetHandler "proxy:fcgi://127.0.0.1:9000"


# 目錄索引已在 DirectoryIndex 設定
# 確保安全:禁止訪問隱藏文件、備份文件

    Require all denied


    Require all denied

重啟 Apache:httpd.exe -k restart -n Apache24

步驟 4:安裝 MySQL

  1. 執行 MySQL Installer,選「Server only」或「Custom」安裝
  2. 配置:
    • 認證方式:Use Strong Password Encryption (推薦)
    • 設定 root 密碼
    • 啟用作為 Windows Service,開機自啟
    • 預設端口 3306
  3. 驗證連線:mysql -u root -p
  4. 建立測試資料庫:
CREATE DATABASE dev_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'dev_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON dev_db.* TO 'dev_user'@'localhost';
FLUSH PRIVILEGES;

步驟 5:驗證整合

建立 D:/dev/www/test_db.php:

<?php
$pdo = new PDO('mysql:host=127.0.0.1;dbname=dev_db;charset=utf8mb4', 'dev_user', 'strong_password', [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
$stmt = $pdo->query('SELECT VERSION() as version, NOW() as now');
$row = $stmt->fetch();
echo "MySQL 版本: {$row['version']}
"; echo "伺服器時間: {$row['now']}
"; echo "PHP 版本: " . PHP_VERSION . "
"; echo "Apache: " . $_SERVER['SERVER_SOFTWARE'] . "
"; ?>

瀏覽器訪問 https://localhost:8080/test_db.php 應顯示連線成功資訊。

常見問題排查表

現象可能原因解決
Apache 啟動失敗端口被佔用 / 配置語法錯誤httpd.exe -t 檢查 / 更改 Listen 端口
PHP 檔案顯示原始碼/下載Handler 未正確配置 / 模組未載入檢查 SetHandler proxy:fcgi / 載入 mod_proxy_fcgi
PHP-FPM 連線失敗端口 9000 被佔 / 防火牆 / php-fpm 未啟動netstat -ano | findstr 9000 / 重啟 php-fpm
MySQL 連線拒絕服務未啟 / 密碼錯 / 主機名解析服務管理器啟動 / 用 127.0.0.1 代替 localhost
中文亂碼資料庫/表/連線 charset 不一致全鏈路 utf8mb4:連線 DSN、建表、PHP internal_encoding
Class 'PDO' not found未啟用 pdo_mysql 擴展php.ini 開啟 extension=pdo_mysql

開發效率提升工具

  • 虛擬主機: 編輯 httpd-vhosts.conf,配合 C:\Windows\System32\drivers\etc\hosts 實現 project1.local 訪問
  • Composer: 下載 composer.phar 放入 PATH,管理 PHP 依賴
  • Xdebug: 下載對應版本 php_xdebug.dll,配置 php.ini 遠程除錯
  • Git Bash / Windows Terminal: 現代命令列體驗

總結

手動搭建 WAMP 環境核心步驟:

  1. Apache 解壓配置 httpd.conf (DocumentRoot、DirectoryIndex、模組)
  2. PHP 解壓配置 php.ini (擴展、時區、錯誤、Opcache)
  3. PHP-FPM 配置 php-fpm.conf (池設定、監聽端口)
  4. Apache 代理 PHP 請求至 PHP-FPM (SetHandler proxy:fcgi://)
  5. MySQL 安裝服務、建立資料庫用戶
  6. 驗證全鏈路連通

理解這些細節,遷移至 Docker、生產部署、雲端服務時都能游刃有餘。

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