第 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
- 下载 PHP for Windows(VS16 x64 Thread Safe)
- 解压到
C:\php - 将
C:\php添加到系统PATH环境变量 - 复制
php.ini-development为php.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