强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

PHP 完全指南 / 第 2 章 — 环境安装

第 2 章 — 环境安装:PHP、Composer 与 IDE 配置

2.1 安装 PHP

2.1.1 macOS(Homebrew)

# 添加 PHP 官方 tap
brew tap shivammathur/php

# 安装 PHP 8.3
brew install shivammathur/php/php@8.3

# 切换版本(如有多个版本)
brew link --overwrite --force shivammathur/php/php@8.3

# 验证安装
php -v
# PHP 8.3.x (cli) (built: ...)

# 查看已安装的扩展
php -m

2.1.2 Ubuntu / Debian

# 添加 Ondrej Sury PPA(推荐,提供多版本)
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:ondrej/php
sudo apt update

# 安装 PHP 8.3 及常用扩展
sudo apt install -y php8.3 php8.3-cli php8.3-common \
    php8.3-curl php8.3-mbstring php8.3-xml php8.3-zip \
    php8.3-bcmath php8.3-intl php8.3-mysql php8.3-pgsql \
    php8.3-sqlite3 php8.3-readline php8.3-opcache php8.3-gd

# 验证
php -v

2.1.3 Windows

  1. 下载 PHP for Windows(VS16 x64 Thread Safe)
  2. 解压到 C:\php
  3. C:\php 添加到系统 PATH 环境变量
  4. 复制 php.ini-developmentphp.ini 并按需修改
# 验证(PowerShell)
php -v
php -m

2.1.4 多版本管理

工具 平台 说明
brew + shivammathur/php macOS 每个版本独立安装
update-alternatives Linux 切换默认版本
phpbrew macOS/Linux 类似 nvm 的版本管理器
scoop Windows 包管理器
# Linux 切换版本示例
sudo update-alternatives --set php /usr/bin/php8.3
sudo update-alternatives --set php-config /usr/bin/php-config8.3
sudo update-alternatives --set phpize /usr/bin/phpize8.3

2.2 配置 php.ini

PHP 的核心配置文件是 php.ini,可以通过以下命令定位:

# 查看当前加载的配置文件路径
php --ini

# 查看某个配置项的当前值
php -i | grep error_reporting
php -r "echo ini_get('memory_limit');"

推荐配置修改

; 开发环境推荐 php.ini 设置

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

; 内存与执行时间
memory_limit = 256M
max_execution_time = 30
max_input_time = 60

; 文件上传
upload_max_filesize = 64M
post_max_size = 64M
max_file_uploads = 20

; 时区
date.timezone = Asia/Shanghai

; OPcache(生产环境)
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0

; 会话
session.gc_maxlifetime = 1440
session.cookie_httponly = 1
session.cookie_secure = 1
session.cookie_samesite = "Lax"

2.3 安装 Composer

Composer 是 PHP 的依赖管理工具,类似于 Node.js 的 npm 或 Python 的 pip。

全局安装

# 下载并安装(Linux/macOS)
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
php -r "unlink('composer-setup.php');"

# 验证
composer --version
# Windows(使用安装程序)
# 下载 https://getcomposer.org/Composer-Setup.exe 并运行

常用命令速查

命令 说明
composer init 交互式创建 composer.json
composer install 安装所有依赖(根据 composer.lock
composer update 更新依赖到最新兼容版本
composer require vendor/package 添加依赖
composer remove vendor/package 移除依赖
composer dump-autoload 重新生成自动加载映射
composer show 列出已安装的包
composer outdated 查看过时的依赖
composer validate 校验 composer.json

国内镜像配置

# 全局配置阿里云镜像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

# 或者在项目 composer.json 中配置
{
    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "https://mirrors.aliyun.com/composer/"
        }
    }
}

2.4 项目初始化

# 创建项目目录
mkdir my-php-project && cd my-php-project

# 初始化 Composer 项目
composer init \
    --name="myname/my-project" \
    --description="My PHP project" \
    --type=project \
    --stability=dev \
    --license=MIT

# 项目结构
my-php-project/
├── composer.json          # 项目元数据与依赖声明
├── composer.lock          # 锁定的依赖版本
├── vendor/                # 第三方依赖(不要提交到 Git)
│   ├── autoload.php       # Composer 自动加载入口
│   └── ...
├── src/                   # 项目源码
│   └── ...
├── public/                # Web 入口
│   └── index.php
└── tests/                 # 测试
    └── ...

.gitignore 模板

/vendor/
composer.lock
.env
.idea/
.vscode/
*.swp
*.swo

2.5 IDE 配置

2.5.1 PhpStorm(推荐)

JetBrains PhpStorm 是 PHP 开发的首选 IDE,提供:

功能 说明
代码补全 基于类型推断的智能补全
重构工具 重命名、提取方法、移动类
数据库工具 内置 SQL 客户端
调试器 Xdebug 集成
版本控制 Git、SVN 集成
Composer 图形化依赖管理
代码质量 PHPStan、Psalm 集成

Xdebug 配置

; php.ini 中启用 Xdebug
[xdebug]
zend_extension=xdebug
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
xdebug.idekey=PHPSTORM

安装 Xdebug

# 使用 pecl 安装
pecl install xdebug

# 或通过包管理器
sudo apt install php8.3-xdebug
brew install php-xdebug

2.5.2 VS Code

VS Code 配合扩展也能提供优秀的 PHP 开发体验:

扩展 说明
PHP Intelephense 代码补全、跳转、重构
PHP Debug Xdebug 调试
PHPStan 静态分析
PHP CS Fixer 代码格式化
Composer Composer 管理
PHP Namespace Resolver 自动导入命名空间
// .vscode/settings.json
{
    "php.validate.executablePath": "/usr/local/bin/php",
    "intelephense.environment.phpVersion": "8.3",
    "editor.formatOnSave": true,
    "[php]": {
        "editor.defaultFormatter": "junstyle.php-cs-fixer",
        "editor.codeActionsOnSave": {
            "source.fixAll.cs-fixer": "explicit"
        }
    }
}

2.5.3 编辑器对比

特性 PhpStorm VS Code Sublime Text
价格 付费(学生免费) 免费 付费
PHP 支持 原生 插件 插件
调试 内置 Xdebug 扩展 Xdebug 插件
重构
数据库 内置 插件
内存占用
启动速度

2.6 开发工具链

2.6.1 静态分析

# PHPStan — 静态类型分析
composer require --dev phpstan/phpstan
vendor/bin/phpstan analyse src --level=9

# Psalm — 类似 PHPStan,由 Vimeo 开发
composer require --dev vimeo/psalm
vendor/bin/psalm --show-info=true

2.6.2 代码风格

# PHP-CS-Fixer — 自动修复代码风格
composer require --dev friendsofphp/php-cs-fixer
vendor/bin/php-cs-fixer fix src

# 创建配置文件 .php-cs-fixer.dist.php
<?php
// .php-cs-fixer.dist.php
$finder = PhpCsFixer\Finder::create()
    ->in(__DIR__ . '/src')
    ->in(__DIR__ . '/tests');

return (new PhpCsFixer\Config())
    ->setRules([
        '@PER-CS' => true,
        'array_syntax' => ['syntax' => 'short'],
        'no_unused_imports' => true,
        'ordered_imports' => ['sort_algorithm' => 'alpha'],
        'single_quote' => true,
    ])
    ->setFinder($finder);

2.6.3 常用扩展清单

# 检查当前已安装的扩展
php -m

# 必备扩展
# curl        — HTTP 请求
# mbstring    — 多字节字符串
# xml         — XML 处理
# json        — JSON(PHP 8.0+ 内置)
# pdo_mysql   — MySQL 数据库
# pdo_pgsql   — PostgreSQL 数据库
# pdo_sqlite  — SQLite 数据库
# zip         — ZIP 归档
# intl        — 国际化
# gd / imagick — 图片处理
# bcmath      — 高精度数学
# opcache     — 字节码缓存
# redis       — Redis 客户端

2.7 业务场景:团队开发环境统一

Docker 统一环境

团队中最有效的方式是通过 Docker 统一开发环境,确保每个人使用相同的 PHP 版本和扩展。

# Dockerfile
FROM php:8.3-cli

# 安装系统依赖
RUN apt-get update && apt-get install -y \
    git unzip libzip-dev libpng-dev libicu-dev \
    && docker-php-ext-install zip bcmath intl gd pdo_mysql

# 安装 Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

WORKDIR /app
COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader

COPY . .
CMD ["php", "-a"]
# docker-compose.yml
services:
  app:
    build: .
    volumes:
      - .:/app
    ports:
      - "8080:8080"
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: myapp
    ports:
      - "3306:3306"

2.8 扩展阅读


上一章第 1 章 — PHP 简介 下一章第 3 章 — Hello World