第 01 章:PHP 开发环境搭建与第一个程序
本章要点:工欲善其事,必先利其器。接下来,我们会从零开始,搭建一套真正专业的 PHP 开发环境,并在这个过程中真正理解 PHP 程序是怎么跑起来的。
1.1 PHP 发展历史与版本选择
1.1.1 PHP 的演进历程
PHP(Hypertext Preprocessor)最早诞生于 1994 年,由 Rasmus Lerdorf 一手打造。将近三十年过去了,它已经成为 Web 开发领域里最“接地气”的服务器端语言之一,没有之一。从一个简单的“个人主页工具包”一路走到今天,它的进化路径其实挺清晰的:
PHP 1.0 (1995)→ 个人主页工具包
PHP 3.0 (1998)→ 正式命名为 PHP,支持面向对象
PHP 4.0 (2000)→ 引入 Zend 引擎,性能大幅提升
PHP 5.0 (2004)→ 完善的 OOP 支持,PDO 诞生
PHP 7.0 (2015)→ 性能革命,速度提升 2-3 倍
PHP 8.0 (2020)→ JIT 编译器,类型系统增强
PHP 8.2+ (2023) → 只读类、空类型、性能持续优化
注意到没有?每一次大的版本升级,PHP 都在努力让自己变得更现代化、更高效。尤其是 PHP 7 那次,简直是“换血”级别的优化,把整个生态都重新激活了。
1.1.2 版本选择建议
面对这么多版本,新手常问的一个问题就是:到底该用哪个?下面这张表可能比长篇大论更直观:
| 版本 | 状态 | 建议 |
|---|---|---|
| PHP 5.x | 已停止支持 | ❌ 不要使用 |
| PHP 7.0-7.4 | 安全维护期 | ⚠️ 老项目维护可用 |
| PHP 8.0-8.1 | 安全维护期 | ⚠️ 可使用,建议升级 |
| PHP 8.2+ | 活跃支持 | ✅ 强烈推荐 |
| PHP 8.3+ | 最新版本 | ✅ 新项目首选 |
为什么这么坚定地推荐 PHP 8.2+?理由很实在:
- 性能优势:JIT 编译器带来了 10-15% 的额外性能提升,别小看这个数字,在高并发场景下就是实打实的省钱。
- 类型安全:联合类型、混合类型、空类型这些特性,让代码出错的概率大大降低,团队协作时尤其明显。
- 语法糖:像 Constructor Property Promotion 这样的特性,能少写不少 boilerplate 代码,维护起来也更清爽。
- 安全性:活跃版本意味着持续的安全补丁和漏洞修复,没有理由抱着旧版本不放。
1.2 Windows/macOS/Linux 环境配置
1.2.1 Windows 系统安装
方式一:官方安装包(推荐新手)
如果你是第一次接触 PHP,建议从官方安装包入手,流程简单,没什么黑魔法。步骤如下:
- 访问 PHP 官网下载页面:https://windows.php.net/download/
- 下载 Thread Safe 版本(要和 Apache 配合使用的话,选这个没错)
- 解压到
C:\php目录 - 配置环境变量:
右键“此电脑” → 属性 → 高级系统设置 → 环境变量 → Path → 新建 → 添加C:\php - 复制
php.ini-development为php.ini
然后打开 php.ini,把下面这些关键配置调一下:
; php.ini 关键配置
date.timezone = "Asia/Shanghai"; 设置时区
extension_dir = "ext" ; 扩展目录
extension=curl; 启用 cURL
extension=fileinfo; 启用文件信息
extension=mbstring; 启用多字节字符串
extension=mysqli; 启用 MySQLi
extension=pdo_mysql ; 启用 PDO MySQL
upload_max_filesize = 50M ; 上传文件大小限制
post_max_size = 50M ; POST 数据大小限制
memory_limit = 256M ; 内存限制
配置结束后,打开命令提示符输入 php -v,如果看到类似下面的输出,就说明环境装好了:
# 打开命令提示符
php -v
# 预期输出
PHP 8.2.12 (cli) (built: Oct 10 2023 14:21:25) (ZTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.2.12, Copyright (c) Zend Technologies
方式二:使用 phpStudy(一键安装)
如果你觉得官方安装太麻烦,或者就想快速搭个环境跑个 demo,phpStudy 是个不错的国产工具。它的设计理念就是“一键搞定”:
- 去官网 https://www.xp.cn/ 下载 phpStudy
- 安装后直接启动 Apache + PHP + MySQL
- 在设置里可以随意切换 PHP 版本
- 网站根目录默认在
D:\phpstudy_pro\WWW
优点很明显:一键安装、图形界面、多版本切换。但缺点是配置灵活性不够高,生产环境就别想了,开发测试用用倒是顺手。
1.2.2 macOS 系统安装
方式一:Homebrew 安装(推荐)
在 Mac 上装 PHP,最省心的方式就是用 Homebrew。先确保 Homebrew 已安装,然后:
# 安装 Homebrew(如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装 PHP 8.2
brew install php@8.2
# 链接到 PATH
brew link --overwrite php@8.2
# 验证安装
php -v
# 查看 php.ini 位置
php --ini
方式二:MacPorts 安装
如果你习惯用 MacPorts,也可以:
# 安装 MacPorts
sudo port install php82
# 安装常用扩展
sudo port install php82-mysqlnd
sudo port install php82-curl
sudo port install php82-mbstring
几个 macOS 下常用的配置路径和命令:
- 配置文件位置:
/opt/homebrew/etc/php/8.2/php.ini - 扩展目录:
/opt/homebrew/lib/php/pecl/ - 重启 PHP:
brew services restart php@8.2
1.2.3 Linux 系统安装
Ubuntu/Debian
Linux 下的 PHP 安装同样不复杂,以 Ubuntu 为例,通过 Ondrej 仓库可以轻松获取最新版本:
# 添加 Ondrej PHP 仓库
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
# 安装 PHP 8.2 及常用扩展
sudo apt install php8.2 php8.2-cli php8.2-fpm php8.2-mysql \
php8.2-curl php8.2-gd php8.2-mbstring \
php8.2-xml php8.2-zip php8.2-bcmath php8.2-redis
# 验证安装
php -v
# 查看配置文件
php --ini
CentOS/RHEL
CentOS 用户则需要通过 Remi 仓库来获取 PHP 8.2:
# 安装 EPEL 和 Remi 仓库
sudo yum install epel-release
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
# 启用 PHP 8.2 模块
sudo dnf module reset php
sudo dnf module enable php:remi-8.2
# 安装 PHP
sudo dnf install php php-cli php-fpm php-mysqlnd php-curl \
php-gd php-mbstring php-xml php-zip
# 验证安装
php -v
1.2.4 验证 PHP 安装
不管用哪种方式装完,都可以创建测试文件来确认一切正常。新建一个 info.php:
把这个文件丢到 Web 服务器根目录,然后在浏览器里访问 http://localhost/info.php。如果看到 PHP 信息页,就说明环境搭好了。
不过,信息页只是第一步。别忘了下面这个安全检查清单:
-
display_errors在生产环境应设为Off -
expose_php建议设为Off(隐藏 PHP 版本) - 确认必要的扩展已启用
- 检查时区设置是否正确
1.3 集成环境对比(XAMPP vs phpStudy vs Docker)
1.3.1 主流集成环境对比
不同场景下,选择哪种集成环境其实是个值得琢磨的问题。下面这张表把几个主流方案放在一起,方便你根据自己的需求来做判断:
| 特性 | XAMPP | phpStudy | Docker | 手动配置 |
|---|---|---|---|---|
| 安装难度 | ⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 配置灵活性 | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 性能 | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 多版本支持 | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 生产环境适用 | ❌ | ❌ | ✅ | ✅ |
| 学习价值 | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
1.3.2 XAMPP 使用指南
XAMPP 最适合的场景是什么?快速原型开发、教学演示、或者临时测试。它的目录结构非常清晰:
# XAMPP 目录结构
/opt/lampp/ # 安装目录
├── htdocs/ # 网站根目录
├── etc/# 配置文件
│ ├── httpd.conf# Apache 配置
│ └── php.ini # PHP 配置
├── bin/# 可执行文件
└── logs/ # 日志文件
# 启动服务
sudo /opt/lampp/lampp start
# 停止服务
sudo /opt/lampp/lampp stop
# 重启服务
sudo /opt/lampp/lampp restart
1.3.3 Docker 环境搭建(推荐生产环境)
如果目标是生产环境或者需要严格的隔离与可重复性,Docker 是不二选择。下面这个 docker-compose.yml 一键拉起 PHP + Nginx + MySQL + Redis,可以说是现代微服务开发的标配了:
version: '3.8'
services:
php:
image: php:8.2-fpm
container_name: php-app
working_dir: /var/www/html
volumes:
- ./src:/var/www/html
- ./php.ini:/usr/local/etc/php/conf.d/custom.ini
networks:
- app-network
nginx:
image: nginx:alpine
container_name: nginx-app
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
networks:
- app-network
mysql:
image: mysql:8.0
container_name: mysql-app
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: app_db
MYSQL_USER: app_user
MYSQL_PASSWORD: app_pass
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
networks:
- app-network
redis:
image: redis:alpine
container_name: redis-app
ports:
- "6379:6379"
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
mysql-data:
看到这份配置文件,你就知道 Docker 的好处了——所有服务、端口、卷挂载、网络都定义得清清楚楚,而且可以版本管理、一键部署。虽然初期学习和配置成本稍高,但一旦上手,整套环境的复制和扩展都会变得异常轻松。
