强曰为道

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

第 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/[email protected]

# 切换版本(如有多个版本)
brew link --overwrite --force shivammathur/php/[email protected]

# 验证安装
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/phpmacOS每个版本独立安装
update-alternativesLinux切换默认版本
phpbrewmacOS/Linux类似 nvm 的版本管理器
scoopWindows包管理器
# 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 DebugXdebug 调试
PHPStan静态分析
PHP CS Fixer代码格式化
ComposerComposer 管理
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 编辑器对比

特性PhpStormVS CodeSublime 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