Skip to content

Windows 安装

在 Windows 系统上安装 PHP 有多种方式可供选择,从官方提供的预编译二进制包到集成的开发环境套件,再到 Windows Subsystem for Linux 2 (WSL2),每种方式都有其适用的场景。本节将详细介绍这些安装方法,帮助你根据实际需求选择最适合的方案。

近年来,随着 WSL2 的成熟和 Docker Desktop 对 Windows 的支持,Windows 上的 PHP 开发体验已经大幅改善。本节将覆盖所有主流的 Windows PHP 安装方案。

前置知识

  • 了解 Windows 系统的基本操作和文件管理
  • 具备命令提示符(CMD)或 PowerShell 的基本使用能力
  • 了解 Windows 环境变量的概念

基础概念

Windows 上的 PHP 运行方式

在 Windows 上运行 PHP 主要有以下几种方式:

方式说明推荐度
官方二进制包从 php.net 下载 zip 包,手动配置中等
集成环境XAMPP/Wnmp 等一键安装套件适合初学者
WSL2在 Windows 上运行 Linux 子系统强烈推荐
Docker通过容器运行 PHP推荐

线程安全(Thread Safe)与 非线程安全(Non Thread Safe)

Windows 版 PHP 提供两种编译版本,选择正确的版本至关重要:

  • Thread Safe (TS):适用于 Apache + mod_php 或 IIS。PHP 作为服务器模块嵌入运行,共享同一个进程空间。
  • Non Thread Safe (NTS):适用于 FastCGI 模式(IIS + FastCGI、Nginx + php-cgi)或命令行使用。每个请求在独立的进程中运行。

版本选择规则

  • 如果使用 IIS + FastCGI 或 Nginx,选择 NTS 版本
  • 如果使用 Apache + mod_php,选择 TS 版本
  • 如果不确定或使用 CLI 开发,选择 NTS 版本(更通用)
  • WSL2/Docker 环境下此选择不适用(使用 Linux 版 PHP)

官方安装包安装

步骤 1:下载 PHP

访问 PHP 官方下载页面,选择适合的版本:

bash
# PHP 官方下载地址
# https://www.php.net/downloads.php
# Windows 专用下载页:
# https://windows.php.net/download/

下载说明

  1. 在下载页面选择 PHP 8.2(或更新的稳定版本)
  2. 在 "Windows downloads" 区域,根据架构选择 VS16 x64 Non Thread SafeVS16 x86 Non Thread Safe
  3. 下载 ZIP 压缩包(非Installer)

关于 VS16 和 VS17

  • VS16 = Visual Studio 2019 编译,兼容 Windows 7+
  • VS17 = Visual Studio 2022 编译,要求 Windows 10 1903+
  • 推荐 VS17 版本,它使用了更新的编译器,性能更优

步骤 2:解压安装

powershell
# 创建 PHP 安装目录
mkdir C:\php

# 解压下载的 ZIP 包到 C:\php
# (可通过文件资源管理器或 PowerShell 展开)
Expand-Archive -Path php-8.2.20-nts-Win32-vs17-x64.zip -DestinationPath C:\php

步骤 3:配置 php.ini

powershell
# 进入 PHP 安装目录
cd C:\php

# 复制配置文件模板
copy php.ini-development php.ini

编辑 C:\php\php.ini 文件,修改以下关键配置:

ini
; 扩展目录
extension_dir = "C:\php\ext"

; 时区设置(必须配置)
date.timezone = Asia/Shanghai

; 常用扩展(去掉前面的分号 ; 来启用)
extension=mysqli
extension=pdo_mysql
extension=mbstring
extension=openssl
extension=curl
extension=gd
extension=zip
extension=fileinfo
extension=intl
extension=exif

; 内存限制
memory_limit = 256M

; 上传文件大小
upload_max_filesize = 64M
post_max_size = 128M

; 错误显示(开发环境开启)
display_errors = On
error_reporting = E_ALL

; OPcache(生产环境开启)
[opcache]
opcache.enable = 1
opcache.memory_consumption = 256
opcache.max_accelerated_files = 20000
opcache.jit_buffer_size = 64M

步骤 4:配置环境变量

powershell
# 以管理员身份运行 PowerShell

# 将 PHP 目录添加到系统 PATH 环境变量
$env:Path += ";C:\php"

# 永久添加(通过系统属性也可以手动操作)
[Environment]::SetEnvironmentVariable(
    "Path",
    [Environment]::GetEnvironmentVariable("Path", "Machine") + ";C:\php",
    "Machine"
)

或者通过图形界面操作:

  1. 右键"此电脑" -> "属性" -> "高级系统设置"
  2. 点击"环境变量"
  3. 在"系统变量"中找到 Path,点击"编辑"
  4. 点击"新建",添加 C:\php
  5. 点击"确定"保存

步骤 5:验证安装

powershell
# 打开新的 PowerShell 窗口(确保环境变量生效)
php -v

# 输出示例:
# PHP 8.2.20 (cli) (built: Jun  4 2024 15:41:19)
# (NTS Visual C++ 2019 x64)

# 验证扩展
php -m

# 验证配置文件路径
php --ini

XAMPP/Wnmp 集成环境

对于初学者或需要快速搭建 PHP + MySQL + Apache 的完整开发环境,集成套件是最方便的选择。

XAMPP 安装

XAMPP 是 Apache Friends 提供的免费开源跨平台集成环境,包含 Apache、MySQL、PHP 和 Perl。

bash
# XAMPP 官方下载地址
# https://www.apachefriends.org/

安装步骤

  1. 从官网下载 XAMPP Windows 版安装包
  2. 运行安装程序,选择安装目录(如 C:\xampp
  3. 安装完成后,通过 XAMPP Control Panel 启动 Apache 和 MySQL
  4. 访问 http://localhost/dashboard/ 确认安装成功
powershell
# 验证 XAMPP 中的 PHP
C:\xampp\php\php.exe -v

XAMPP 中的 PHP 配置

XAMPP 使用 Thread Safe 版本的 PHP。配置文件位于 C:\xampp\php\php.ini。如果需要升级 XAMPP 中的 PHP 版本,建议整体升级 XAMPP,而非单独替换 PHP 文件。

Wnmp 安装

Wnmp (Windows + Nginx + MySQL + PHP) 是一个轻量级的 Windows 集成环境,使用 Nginx 替代 Apache,更加轻量。

bash
# Wnmp 官方下载地址
# https://wnmp.x64architecture.com/

安装步骤

  1. 下载 Wnmp 安装包
  2. 解压到目标目录(如 C:\wnmp
  3. 运行 start.bat 或通过 Nginx Service Manager 管理服务
  4. 访问 http://localhost 确认安装成功

Wnmp 支持通过配置面板快速切换 PHP 版本,适合需要在多个版本之间切换的开发者。

WSL2 安装

WSL2(Windows Subsystem for Linux 2)是在 Windows 上运行原生 Linux 环境的最佳方式。通过 WSL2 安装 PHP 等同于在 Linux 上安装,可以获得与生产环境一致的体验。

步骤 1:安装 WSL2

powershell
# 以管理员身份运行 PowerShell

# 安装 WSL2(Windows 10 2004+ 或 Windows 11)
wsl --install

# 默认安装 Ubuntu。如需指定发行版:
wsl --install -d Ubuntu-22.04

# 安装完成后重启计算机

步骤 2:初始化 Linux 环境

bash
# 打开 WSL 终端(PowerShell 中输入 wsl 即可进入)

# 更新系统包
sudo apt update && sudo apt upgrade -y

# 添加 PHP PPA
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

步骤 3:安装 PHP

bash
# 安装 PHP 8.2 及常用扩展
sudo apt install -y php8.2-cli php8.2-fpm php8.2-common \
    php8.2-mysql php8.2-mbstring php8.2-xml \
    php8.2-curl php8.2-zip php8.2-gd \
    php8.2-intl php8.2-readline php8.2-opcache

# 验证
php -v

步骤 4:配置 Nginx(可选)

bash
# 在 WSL 中安装 Nginx
sudo apt install -y nginx
sudo systemctl start nginx

# 配置 Nginx 站点
sudo tee /etc/nginx/sites-available/default > /dev/null <<'EOF'
server {
    listen 80;
    server_name localhost;
    root /var/www/html;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
EOF

# 重启 Nginx
sudo systemctl restart nginx
sudo systemctl restart php8.2-fpm

步骤 5:在 Windows 中访问 WSL 服务

powershell
# WSL2 中的服务可以通过 localhost 在 Windows 中直接访问
# 例如,在 WSL 中启动 PHP 内置服务器:

# 在 WSL 终端中
cd /var/www/html
php -S localhost:8080

# 然后在 Windows 浏览器中访问 http://localhost:8080

WSL2 文件系统性能

在 WSL2 中,直接访问 Linux 文件系统(/home/...)的性能远优于访问 Windows 文件系统(/mnt/c/...)。建议将项目代码放在 WSL 的文件系统内,而非 Windows 的 C 盘中,可以获得显著的 I/O 性能提升。

环境变量配置

Windows 上的 PHP 环境变量配置与 Unix 系统有所不同,需要特别注意以下几点。

PATH 配置

powershell
# 临时设置(仅当前会话)
$env:Path += ";C:\php"

# PowerShell 永久设置(当前用户)
[Environment]::SetEnvironmentVariable(
    "Path",
    [Environment]::GetEnvironmentVariable("Path", "User") + ";C:\php",
    "User"
)

# PowerShell 永久设置(所有用户,需要管理员权限)
[Environment]::SetEnvironmentVariable(
    "Path",
    [Environment]::GetEnvironmentVariable("Path", "Machine") + ";C:\php",
    "Machine"
)

PHP 相关环境变量

powershell
# PHPRC — 指定 php.ini 文件的搜索目录
[Environment]::SetEnvironmentVariable("PHPRC", "C:\php", "User")

# PHP_INI_SCAN_DIR — 指定额外的 ini 文件扫描目录
[Environment]::SetEnvironmentVariable("PHP_INI_SCAN_DIR", "C:\php\conf.d", "User")

验证安装

基本验证

powershell
# 1. 检查 PHP 版本
php -v

# 2. 查看已加载模块
php -m

# 3. 查看配置文件路径
php --ini

# 4. 检查特定配置值
php -r "echo ini_get('date.timezone');"

# 5. 运行测试脚本
php -r "echo 'Hello, PHP ' . PHP_VERSION . PHP_EOL;"

创建测试页面

php
<?php
declare(strict_types=1);

echo "PHP 版本: " . PHP_VERSION . "\n";
echo "操作系统: " . PHP_OS . "\n";
echo "SAPI: " . PHP_SAPI . "\n";
echo "服务器软件: " . $_SERVER['SERVER_SOFTWARE'] ?? "CLI 模式" . "\n";
echo "当前时间: " . date('Y-m-d H:i:s') . "\n";

将以上内容保存为 C:\php\test.php,然后运行:

powershell
php C:\php\test.php

详细配置

IIS 集成配置

如果你使用 Windows Server + IIS 作为 Web 服务器,需要配置 IIS 通过 FastCGI 运行 PHP。

powershell
# 步骤 1:安装 IIS 和 CGI 模块
# 通过"启用或关闭 Windows 功能"安装 IIS
# 或使用 PowerShell(管理员):
Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole,Web-CGI

# 步骤 2:下载并安装 PHP Manager for IIS
# https://github.com/phpmanager/phpmanager/releases
# PHP Manager 提供了图形界面来管理 IIS 中的 PHP 配置

# 步骤 3:使用 PHP Manager 注册 PHP
# 打开 IIS 管理器 -> PHP Manager -> Register new PHP version
# 指向 C:\php\php-cgi.exe

Nginx + PHP-CGI 配置

nginx
# nginx.conf 配置示例
worker_processes auto;

events {
    worker_connections 1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile      on;
    keepalive_timeout 65;

    server {
        listen 80;
        server_name localhost;
        root C:/www;
        index index.php index.html;

        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }

        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}
powershell
# 启动 PHP-CGI(FastCGI 模式)
C:\php\php-cgi.exe -b 127.0.0.1:9000

# 或创建一个 .bat 脚本方便启动
@echo off
title PHP-CGI FastCGI
C:\php\php-cgi.exe -b 127.0.0.1:9000

Apache + PHP 模块配置

如果使用 Apache,需要下载 Thread Safe 版本的 PHP,并配置 httpd.conf

apache
# httpd.conf 中添加以下配置

# 加载 PHP 模块(路径根据实际情况调整)
LoadModule php_module "C:/php/php8apache2_4.dll"

# 关联 .php 文件
AddHandler application/x-httpd-php .php

# 设置 php.ini 目录
PHPIniDir "C:/php"

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

实战示例

Windows 快速搭建 Laravel 开发环境

powershell
# 1. 确认 PHP 已安装
php -v

# 2. 安装 Composer
# 下载 Composer 安装程序
Invoke-WebRequest -Uri https://getcomposer.org/installer -OutFile composer-setup.php
php composer-setup.php
Remove-Item composer-setup.php

# 全局安装 Composer
Move-Item composer.phar C:\php\composer.phar

# 创建 Composer 包装脚本
@'
@php "%~dp0composer.phar" %*
'@ | Out-File -Encoding ASCII C:\php\composer.cmd

# 验证
composer --version

# 3. 创建 Laravel 项目
composer create-project laravel/laravel my-project
cd my-project

# 4. 启动开发服务器
php artisan serve
# Laravel development server started: http://127.0.0.1:8000

WSL2 中搭建完整 PHP 开发环境

bash
#!/bin/bash
# WSL2 PHP 开发环境一键搭建脚本

set -e

# 更新系统
sudo apt update && sudo apt upgrade -y

# 安装基础工具
sudo apt install -y curl wget git unzip vim build-essential

# 添加 PHP PPA 并安装 PHP 8.2
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install -y php8.2-cli php8.2-fpm php8.2-common \
    php8.2-mysql php8.2-sqlite3 php8.2-pgsql \
    php8.2-mbstring php8.2-xml php8.2-curl \
    php8.2-zip php8.2-gd php8.2-intl \
    php8.2-readline php8.2-opcache php8.2-xdebug

# 安装 Nginx
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx

# 安装 MySQL
sudo apt install -y mysql-server
sudo mysql_secure_installation

# 安装 Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

# 配置 PHP-FPM(使用当前用户运行,避免权限问题)
sudo sed -i 's/www-data/'$(whoami)'/g' /etc/php/8.2/fpm/pool.d/www.conf
sudo systemctl restart php8.2-fpm

echo "环境搭建完成!"
echo "PHP 版本: $(php -v | head -n 1)"
echo "Nginx 状态: $(systemctl is-active nginx)"
echo "PHP-FPM 状态: $(systemctl is-active php8.2-fpm)"
echo "Composer 版本: $(composer --version)"

注意事项

常见问题排查

问题原因解决方案
php 不是内部或外部命令PATH 未正确配置重新检查环境变量,确保包含 PHP 目录
找不到 php.ini未正确复制模板文件复制 php.ini-developmentphp.ini
扩展加载失败DLL 路径不匹配确认 extension_dir 指向正确的 ext 目录
VCRUNTIME140.dll 缺失缺少 Visual C++ 运行时安装 Microsoft Visual C++ Redistributable
WSL 中无法访问 Windows 文件路径格式问题WSL 中访问 Windows 盘符使用 /mnt/c/ 前缀

版本兼容性

  • Windows 7/8:仅支持 VS16 编译版本,PHP 8.1 为最后支持的版本
  • Windows 10 1903+:推荐使用 VS17 编译版本
  • Windows 11:全面支持所有 PHP 8.x 版本
  • PHP 9.0+ 将不再支持 Windows 7/8

Windows 7/8 支持已终止

自 PHP 8.2 起,官方不再为 Windows 7/8/Server 2012 提供预编译二进制包。如果仍在使用这些系统,最高只能使用 PHP 8.1,且建议尽快升级操作系统。

最佳实践

  1. 优先选择 WSL2:对于 Windows 用户,WSL2 是目前最佳的 PHP 开发环境方案。它提供了与生产 Linux 环境一致的体验,性能优越,且与 Windows 工具链无缝集成。

  2. 使用 NTS 版本:除非你明确需要 Thread Safe 版本(如 Apache mod_php),否则始终选择 NTS 版本。NTS 版本性能更好,兼容性更广。

  3. 使用 Composer 管理依赖:不要手动下载 PHP 库文件,使用 Composer 来管理项目依赖。Composer 是 PHP 生态的标准依赖管理工具。

  4. 保持环境整洁:避免在系统 PATH 中堆叠多个 PHP 版本。使用如 Laravel Herd 等专用工具可以更方便地管理多个 PHP 版本。

  5. 定期更新:关注 PHP 官方发布的安全公告,及时更新 PHP 版本。在 Windows 上更新只需替换文件目录即可,记得先备份配置文件。

  6. 开发与生产环境一致:尽可能让开发环境与生产环境保持一致。如果生产环境使用 Linux,开发环境也应该使用 WSL2 或 Docker,而非原生 Windows PHP。

下一节

安装完 PHP 后,你可以继续阅读以下内容:

参考链接