跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PHP

macOS PHP 7.4 开发环境完整配置教程

macOS PHP 7.4 开发环境配置教程涵盖 Homebrew 安装、PHP 7.4 及扩展部署、MySQL 8.4 数据库配置、Nginx Web 服务器设置、Redis 缓存服务集成以及域名 hosts 配置。内容包括环境搭建步骤、配置文件修改、测试页面验证、常用命令速查及故障排除指南,旨在帮助开发者快速构建本地多项目开发与调试环境。

未来可期发布于 2026/2/23更新于 2026/5/2624 浏览
macOS PHP 7.4 开发环境完整配置教程

环境概览

技术栈版本
组件版本说明
PHP7.4.33使用 shivammathur/php tap 安装
MySQL8.4.xHomebrew 官方版本
Redis8.4.x缓存服务器
Nginx1.29.xWeb 服务器
目录结构
~/Sites/ # 项目根目录
├── localhost/ # 主开发环境
│   ├── index.php
│   ├── phpinfo.php
│   ├── db_test.php
│   ├── redis_test.php
│   └── final_verification.php
├── projects/ # 多项目目录
│   ├── blog/
│   ├── shop/
│   ├── admin/
│   └── api/
├── logs/ # 日志目录
│   ├── php/
│   └── nginx/
└── ssl/ # SSL 证书目录
/opt/homebrew/ # Homebrew 安装目录
├── etc/ # 配置文件
│   ├── php/7.4/
│   ├── nginx/
│   └── [email protected]/
└── var/ # 数据目录
    ├── [email protected]/
    └── log/

前置准备

检查系统环境
# 检查 Homebrew 是否已安装
which brew
# 检查 Homebrew 版本
brew --version
# 检查系统架构
uname -m # 应该是 arm64(M1/M2/M3)或 x86_64(Intel)
更新 Homebrew
# 更新 Homebrew
brew update
# 检查是否有待升级的包
brew upgrade

阶段 1:安装 Homebrew 和基础组件

1.1 安装 Homebrew(如未安装)
# 安装 Homebrew(官方命令)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 添加 Homebrew 到 PATH(Apple Silicon Mac)
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
1.2 安装基础依赖
# 安装常用工具
brew install curl
brew install wget
brew install git

阶段 2:安装 PHP 7.4

2.1 添加 PHP 扩展仓库

macOS 的 Homebrew 官方仓库不再提供 PHP 7.4,需要使用 shivammathur/php tap:

# 添加 PHP 版本管理仓库
brew tap shivammathur/php
# 更新 brew
brew update
2.2 安装 PHP 7.4
# 安装 PHP 7.4(包含常用扩展)
brew install shivammathur/php/[email protected]
# 验证安装
/opt/homebrew/opt/[email protected]/bin/php --version

输出示例:

PHP 7.4.33 (cli) (built: Dec 19 2025 22:33:57) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies
2.3 配置环境变量
# 编辑 shell 配置文件
vi ~/.zshrc
# 添加以下内容:
export PATH="/opt/homebrew/opt/[email protected]/bin:$PATH"
export PATH="/opt/homebrew/opt/[email protected]/sbin:$PATH"
# 使配置生效
source ~/.zshrc
2.4 验证 PHP 安装
# 检查 PHP 版本
php --version
# 检查已加载的扩展
php -m
# 查看 PHP 配置信息
php -i

阶段 3:安装和配置 MySQL

3.1 安装 MySQL 8.4
# 安装 MySQL 8.4
brew install [email protected]
# 启动 MySQL 服务
brew services start [email protected]
# 验证 MySQL 运行
brew services list | grep mysql
3.2 MySQL 安全配置
# 运行安全配置脚本
/opt/homebrew/opt/[email protected]/bin/mysql_secure_installation
# 按照提示完成配置:
# 1. 设置 VALIDATE PASSWORD component(可选)
# 2. 设置 root 密码
# 3. 移除匿名用户
# 4. 禁止 root 远程登录
# 5. 移除 test 数据库
# 6. 重新加载权限表
3.3 创建开发数据库和用户
# 连接 MySQL
mysql -u root -p
# 在 MySQL 命令行中执行:
CREATE DATABASE IF NOT EXISTS dev_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS 'dev_user'@'localhost' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON dev_database.* TO 'dev_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
3.4 验证 MySQL 连接
# 使用 root 用户连接
mysql -u root -p -e "SELECT VERSION();"
# 使用开发用户连接
mysql -u dev_user -p -e "USE dev_database; SHOW TABLES;"
3.5 MySQL 配置优化(可选)
# 编辑 MySQL 配置文件
vi /opt/homebrew/etc/mysql/my.cnf
# 添加优化配置:
[mysqld]
# 字符集配置
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# InnoDB 配置
innodb_buffer_pool_size = 256M
innodb_log_file_size = 64M
# 连接配置
max_connections = 100
wait_timeout = 28800
# 日志配置
slow_query_log = 1
slow_query_log_file = /opt/homebrew/var/log/mysql/slow.log
long_query_time = 2

阶段 4:安装和配置 Nginx

4.1 安装 Nginx
# 安装 Nginx
brew install nginx
# 启动 Nginx 服务
brew services start nginx
# 验证 Nginx 运行
brew services list | grep nginx
# 测试配置语法
nginx -t
4.2 配置 Nginx 虚拟主机
4.2.1 创建主开发环境配置
# 创建主项目目录
mkdir -p ~/Sites/localhost
mkdir -p ~/Sites/logs/{php,nginx}
# 设置权限
chmod 755 ~/Sites
# 创建配置文件
vi /opt/homebrew/etc/nginx/servers/local.dev.conf

完整配置内容:

server {
    listen 80;
    server_name local.test;
    # 网站根目录
    root /Users/你的用户名/Sites/localhost;
    index index.php index.html index.htm;
    # 日志配置
    access_log /Users/你的用户名/Sites/logs/nginx/local.test.access.log;
    error_log /Users/你的用户名/Sites/logs/nginx/local.test.error.log;
    # PHP 处理
    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;
        fastcgi_read_timeout 300;
    }
    # URL 重写(支持 Laravel 等框架)
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    # 隐藏文件保护
    location ~ /\. {
        deny all;
    }
    # 静态文件缓存
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|woff|woff2)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
}
4.2.2 创建多项目配置
# 创建多项目目录
mkdir -p ~/Sites/projects/{blog,shop,admin,api}
# 设置权限
chmod 755 ~/Sites
# 创建多项目配置
vi /opt/homebrew/etc/nginx/servers/multi_test.conf
# 博客项目
server {
    listen 80;
    server_name blog.test;
    root /Users/你的用户名/Sites/projects/blog;
    index index.php index.html;
    access_log /Users/你的用户名/Sites/logs/nginx/blog.test.access.log;
    error_log /Users/你的用户名/Sites/logs/nginx/blog.test.error.log;
    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;
    }
}
# 商城项目
server {
    listen 80;
    server_name shop.test;
    root /Users/你的用户名/Sites/projects/shop;
    index index.php index.html;
    access_log /Users/你的用户名/Sites/logs/nginx/shop.test.access.log;
    error_log /Users/你的用户名/Sites/logs/nginx/shop.test.error.log;
    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;
    }
}
# 管理后台
server {
    listen 80;
    server_name admin.test;
    root /Users/你的用户名/Sites/projects/admin;
    index index.php index.html;
    access_log /Users/你的用户名/Sites/logs/nginx/admin.test.access.log;
    error_log /Users/你的用户名/Sites/logs/nginx/admin.test.error.log;
    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;
    }
}
4.3 重启 Nginx
# 测试配置语法
nginx -t
# 重启服务
brew services restart nginx
# 查看服务状态
brew services list

阶段 5:安装和配置 Redis 服务器

5.1 安装 Redis 服务器
# 安装 Redis
brew install redis
# 启动 Redis 服务
brew services start redis
# 验证 Redis 运行
brew services list | grep redis
# 测试 Redis 连接
redis-cli ping
5.2 Redis 基本配置
# 编辑 Redis 配置文件
vi /opt/homebrew/etc/redis.conf
# 常用配置:
bind 127.0.0.1
port 6379
daemonize no
# 内存限制
maxmemory 256mb
maxmemory-policy allkeys-lru
# 日志配置
loglevel notice
logfile /opt/homebrew/var/log/redis.log
# RDB 持久化配置
save 900 1
save 300 10
save 60 10000

阶段 6:PHP 扩展配置(Redis 相关)

本阶段将安装和配置与 Redis 相关的 PHP 扩展,包括 igbinary 序列化加速和 LZF 压缩扩展。

6.1 安装前的系统依赖
# 确保 Homebrew 已更新
brew update
# 安装编译工具(如未安装)
brew install autoconf automake libtool
6.2 安装 igbinary 扩展

igbinary 是一个高性能的二进制序列化扩展,比 PHP 标准序列化快 30-50%,用于提升 Redis 数据序列化的性能。

# 安装 igbinary 扩展
/opt/homebrew/opt/[email protected]/bin/pecl install igbinary

安装说明:

  • PECL 会从 pecl.php.net 下载最新稳定版本
  • 编译过程会自动完成,无需额外配置
  • 安装完成后扩展会自动添加到 php.ini
6.3 安装 LZF 压缩扩展

LZF 是一个轻量级的压缩算法,用于 Redis 数据压缩,可以显著减少内存占用。

# 安装 LZF 扩展
/opt/homebrew/opt/[email protected]/bin/pecl install lzf

安装说明:

  • LZF 压缩解压速度极快
  • 适合实时数据压缩场景
  • 与 igbinary 配合使用效果最佳
6.4 安装 Redis 扩展(整合版)

Redis 扩展 是 PHP 连接 Redis 服务器的客户端库,支持所有 Redis 命令。

# 安装 Redis 扩展
/opt/homebrew/opt/[email protected]/bin/pecl install redis

安装过程中的配置选择:

enable igbinary serializer support? [yes] : yes
enable lzf compression support? [yes] : yes
enable zstd compression support? [no] : no
enable msgpack serializer support? [no] : no
enable lz4 compression support? [no] : no

配置选项说明:

选项推荐说明
igbinaryyes二进制序列化,比标准序列化快 30-50%
LZFyes轻量级压缩,CPU 开销小,适合缓存数据
Zstdno高压缩率算法,但增加复杂度,开发环境不需要
MessagePackno跨语言序列化,纯 PHP 项目不需要
LZ4no极速压缩,已有 LZF 足够
6.5 验证扩展安装
# 检查扩展是否正确加载
php -m | grep -E "(redis|igbinary|lzf)"
# 应该显示:
# igbinary
# lzf
# redis
6.6 PHP.ini 基础配置
# 编辑 PHP 配置文件
vi /opt/homebrew/etc/php/7.4/php.ini
# 关键配置:
display_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /Users/你的用户名/Sites/logs/php/php_errors.log
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M

扩展配置(通常自动添加,无需手动配置):

extension=igbinary.so
extension=lzf.so
extension=redis.so
6.7 PHP-FPM 配置
# 编辑 PHP-FPM 配置
vi /opt/homebrew/etc/php/7.4/php-fpm.d/www.conf
# 配置内容:
[www]
user = 你的用户名
group = staff
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
php_admin_value[error_log]= /Users/你的用户名/Sites/logs/php/php-fpm.error.log
php_admin_flag[log_errors]= on
6.8 重启 PHP-FPM 服务
# 重启 PHP-FPM 服务
brew services restart shivammathur/php/[email protected]

阶段 7:域名配置

7.1 为什么使用 .test 域名

重要提醒:不要使用 .dev 域名!

Chrome 浏览器从 2021 年开始对所有 .dev 域名实施 HSTS(HTTP 严格传输安全)策略:

  • ❌ .dev 域名会强制重定向到 HTTPS
  • ❌ 本地开发环境无法提供 HTTPS 证书
  • ❌ 即使修改 hosts 文件也无法访问

推荐使用 .test 域名:

  • ✅ .test 域名专为本地开发设计
  • ✅ 无 HSTS 限制
  • ✅ 所有浏览器兼容
  • ✅ RFC 规范推荐
7.2 配置 hosts 文件
# 编辑 hosts 文件
sudo vi /etc/hosts
# 添加以下内容:
127.0.0.1 local.test
127.0.0.1 blog.test
127.0.0.1 shop.test
127.0.0.1 admin.test
127.0.0.1 api.test
7.3 验证域名解析
# 测试域名解析
ping local.test # 应该返回:PING local.test (127.0.0.1)
# 测试 HTTP 访问
curl -I http://local.test # 应该返回:HTTP/1.1 200 OK

阶段 8:服务管理和验证

8.1 服务管理命令
# 查看服务状态
brew services list
# 检查端口占用
lsof -i :80,9000,3306,6379
8.2 创建测试页面
8.2.1 PHP 信息页面
<?php
// ~/Sites/localhost/phpinfo.php
phpinfo();
8.2.2 数据库连接测试
<?php
// ~/Sites/localhost/db_test.php
echo "<h1>数据库连接测试</h1>";
try {
    $pdo = new PDO("mysql:host=localhost;dbname=dev_database", "dev_user", "你的密码");
    echo "✅ MySQL 连接成功<br>";
    $stmt = $pdo->query("SELECT VERSION() as version");
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    echo "MySQL 版本:" . $row['version'] . "<br>";
} catch (PDOException $e) {
    echo "❌ MySQL 连接失败:" . $e->getMessage() . "<br>";
}
8.2.3 Redis 连接测试
<?php
// ~/Sites/localhost/redis_test.php
echo "<h1>Redis 连接测试</h1>";
try {
    $redis = new Redis();
    $redis->connect('127.0.0.1', 6379);
    echo "✅ Redis 连接成功<br>";
    $redis->set('test_key', 'Hello Redis!');
    $value = $redis->get('test_key');
    echo "Redis 读写测试:$value<br>";
    // 测试 igbinary 序列化
    if (extension_loaded('igbinary')) {
        $data = ['test' => 'data'];
        $serialized = igbinary_serialize($data);
        $redis->set('igbinary_test', $serialized);
        $result = igbinary_unserialize($redis->get('igbinary_test'));
        echo "igbinary 序列化:" . ($data === $result ? "✅ 成功" : "❌ 失败") . "<br>";
    }
} catch (Exception $e) {
    echo "❌ Redis 连接失败:" . $e->getMessage() . "<br>";
}
8.2.4 完整环境验证
<?php
// ~/Sites/localhost/final_verification.php
echo "<h1>🎉 PHP 7.4 开发环境完整验证</h1>";
// PHP 版本
echo "<h2>PHP 版本:" . phpversion() . "</h2>";
// 扩展检查
$extensions = ['pdo_mysql', 'mysqli', 'redis', 'curl', 'gd', 'mbstring', 'openssl', 'igbinary', 'lzf'];
echo "<h3>扩展状态:</h3>";
foreach ($extensions as $ext) {
    $status = extension_loaded($ext) ? "✅" : "❌";
    echo "$status$ext<br>";
}
// 服务端口检查
echo "<h3>服务状态:</h3>";
$ports = [80 => 'Nginx', 9000 => 'PHP-FPM', 3306 => 'MySQL', 6379 => 'Redis'];
foreach ($ports as $port => $service) {
    $fp = @fsockopen('127.0.0.1', $port, $errno, $errstr, 1);
    $status = $fp ? "✅" : "❌";
    echo "$status$service (端口 $port)<br>";
    if ($fp) fclose($fp);
}
// 数据库连接
echo "<h3>数据库连接:</h3>";
try {
    $pdo = new PDO("mysql:host=localhost;dbname=dev_database", "dev_user", "你的密码");
    echo "✅ MySQL 连接成功<br>";
} catch (PDOException $e) {
    echo "❌ MySQL 连接失败<br>";
}
// Redis 连接
echo "<h3>Redis 连接:</h3>";
try {
    $redis = new Redis();
    $redis->connect('127.0.0.1', 6379);
    echo "✅ Redis 连接成功<br>";
} catch (Exception $e) {
    echo "❌ Redis 连接失败<br>";
}
8.3 浏览器访问测试

配置完成后,在浏览器中访问:

# 主环境验证
http://local.test/final_verification.php
# PHP 信息
http://local.test/phpinfo.php
# 数据库测试
http://local.test/db_test.php
# Redis 测试
http://local.test/redis_test.php
# 多项目
http://blog.test
http://shop.test
http://admin.test

常用命令速查

服务管理
# 启动服务
brew services start nginx
brew services start [email protected]
brew services start [email protected]
brew services start redis
# 停止服务
brew services stop nginx
brew services stop [email protected]
brew services stop [email protected]
brew services stop redis
# 重启服务
brew services restart nginx
brew services restart [email protected]
brew services restart [email protected]
brew services restart redis
# 查看所有服务状态
brew services list
# 检查特定端口
lsof -i :80 # Nginx
lsof -i :9000 # PHP-FPM
lsof -i :3306 # MySQL
lsof -i :6379 # Redis
PHP 相关
# PHP 版本
php --version
# 已加载的扩展
php -m
# PHP 配置信息
php -i
# 查找 php.ini 位置
php --ini
# 特定扩展版本
php -r "echo phpversion('redis');"
MySQL 相关
# 连接 MySQL
mysql -u root -p
mysql -u dev_user -p
# 查看数据库
SHOW DATABASES;
# 选择数据库
USE dev_database;
# 查看表
SHOW TABLES;
# MySQL 版本
mysql -V
# 重启 MySQL
brew services restart [email protected]
Redis 相关
# 测试连接
redis-cli ping
# Redis 命令行
redis-cli
# 基本操作
redis-cli SET key value
redis-cli GET key
redis-cli KEYS *
redis-cli DEL key
# 查看 Redis 信息
redis-cli INFO
# 清空所有数据
redis-cli FLUSHALL
Nginx 相关
# 测试配置语法
nginx -t
# 重载配置
nginx -s reload
# 停止 Nginx
nginx -s stop
# 查看 Nginx 版本
nginx -v
# 检查配置
nginx -T
日志查看
# 实时查看日志
tail -f ~/Sites/logs/php/php_errors.log
tail -f ~/Sites/logs/nginx/local.test.error.log
# 查看错误日志
tail -50 ~/Sites/logs/php/php-fpm.error.log
tail -50 ~/Sites/logs/nginx/local.test.error.log
# Nginx 访问日志
tail -50 ~/Sites/logs/nginx/local.test.access.log

故障排除

问题 1:Nginx 启动失败

错误信息:

nginx: [emerg] unknown "user" variable

解决方法:

# 检查并修复 Nginx 配置
nginx -t
# 查看详细错误
tail -f /opt/homebrew/var/log/nginx/error.log
# 确保使用实际用户名而非变量
# 错误示例:root /Users/$USER/Sites/localhost;
# 正确示例:root /Users/你的用户名/Sites/localhost;
问题 2:PHP 扩展未加载

错误信息:

PHP Fatal error: Uncaught Error: Class 'Redis' not found

解决方法:

# 检查扩展是否安装
php -m | grep redis
# 检查 php.ini 配置
php -i | grep extension_dir
# 确认扩展文件存在
ls /opt/homebrew/Cellar/[email protected]/*/pecl/*/redis.so
# 重启 PHP-FPM
brew services restart shivammathur/php/[email protected]
问题 3:MySQL 连接失败

错误信息:

SQLSTATE[HY000] [1045] Access denied for user

解决方法:

# 检查 MySQL 服务状态
brew services list | grep mysql
# 重启 MySQL
brew services restart [email protected]
# 检查 MySQL 错误日志
tail -f /opt/homebrew/var/mysql/*.err
# 验证用户名密码
mysql -u dev_user -p
问题 4:.dev 域名无法访问

问题原因: Chrome 对 .dev 域名实施了 HSTS 策略

解决方法: 使用 .test 域名替代:

# hosts 文件中使用.test 后缀
127.0.0.1 local.test
127.0.0.1 blog.test
问题 5:端口被占用

错误信息:

nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)

解决方法:

# 查找占用端口的进程
lsof -i :80
# 终止占用进程
kill -9 PID
# 或使用其他端口
# 修改 Nginx 配置:listen 8080;
问题 6:PHP-FPM 未运行

解决方法:

# 检查 PHP-FPM 服务
brew services list | grep php
# 手动启动
brew services start shivammathur/php/[email protected]
# 检查错误日志
tail -f ~/Sites/logs/php/php-fpm.error.log
# 测试 PHP-FPM 配置
/opt/homebrew/opt/[email protected]/sbin/php-fpm -t
问题 7:Redis 连接失败

错误信息:

RedisException: Redis server went away

解决方法:

# 检查 Redis 服务状态
brew services list | grep redis
# 启动 Redis
brew services start redis
# 测试连接
redis-cli ping
# 检查 Redis 日志
tail -f /opt/homebrew/var/log/redis.log

最佳实践

1. 定期维护
# 每周检查服务状态
brew services list
# 定期查看日志
tail -f ~/Sites/logs/php/*.log
tail -f ~/Sites/logs/nginx/*.log
# 定期清理过期日志
find ~/Sites/logs -name "*.log" -mtime +7 -delete
2. 性能优化
PHP 优化
# php.ini
opcache.enable = 1
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 10000
opcache.validate_timestamps = 1
opcache.revalidate_freq = 2
MySQL 优化
# my.cnf
innodb_buffer_pool_size = 512M
innodb_log_file_size = 128M
max_connections = 200
query_cache_size = 64M
Redis 优化
# redis.conf
maxmemory 512mb
maxmemory-policy allkeys-lru
appendonly yes
appendfsync everysec
3. 安全管理
MySQL 安全
-- 使用强密码
CREATE USER 'user'@'localhost' IDENTIFIED BY 'StrongP@ssw0rd!';
-- 定期备份数据库
mysqldump -u root -p dev_database > backup_$(date+%Y%m%d).sql
文件权限
# 项目目录权限
chmod 755 ~/Sites/localhost
chmod 644 ~/Sites/localhost/*.php
# 日志目录权限
chmod 755 ~/Sites/logs
chmod 644 ~/Sites/logs/**/*.log
# 禁止 Web 访问敏感文件
# 在 nginx 配置中添加:
location ~ /\. {
    deny all;
}
4. 开发工作流
本地开发
# 1. 启动所有服务
brew services start nginx [email protected] [email protected] redis
# 2. 验证服务状态
brew services list
# 3. 测试开发环境
curl http://local.test/final_verification.php
# 4. 开始开发...
部署前测试
# 1. 检查配置语法
nginx -t
/opt/homebrew/opt/[email protected]/sbin/php-fpm -t
# 2. 重启所有服务
brew services restart nginx [email protected] [email protected] redis
# 3. 全面测试
curl -I http://local.test
curl http://local.test/db_test.php
curl http://local.test/redis_test.php
5. 备份和恢复
数据库备份
# 完整备份
mysqldump -u root -p --all-databases > full_backup_$(date +%Y%m%d).sql
# 单个数据库备份
mysqldump -u root -p dev_database > dev_database_backup_$(date +%Y%m%d).sql
# 恢复数据库
mysql -u root -p < backup_file.sql
配置备份
# 备份所有配置
cp -r /opt/homebrew/etc/nginx ~/backup/nginx_config_$(date +%Y%m%d)
cp -r /opt/homebrew/etc/php/7.4 ~/backup/php_config_$(date +%Y%m%d)
cp -r /opt/homebrew/etc/mysql ~/backup/mysql_config_$(date +%Y%m%d)

附录

A. Homebrew 常用命令
# 安装包
brew install <package_name>
# 卸载包
brew uninstall <package_name>
# 搜索包
brew search <package_name>
# 查看已安装的包
brew list
# 更新包
brew upgrade <package_name>
# 清理旧版本
brew cleanup
# 查看信息
brew info <package_name>
B. 常用文件位置
用途路径
PHP 配置/opt/homebrew/etc/php/7.4/php.ini
PHP-FPM 配置/opt/homebrew/etc/php/7.4/php-fpm.d/www.conf
Nginx 配置/opt/homebrew/etc/nginx/nginx.conf
Nginx 虚拟主机/opt/homebrew/etc/nginx/servers/
MySQL 配置/opt/homebrew/etc/mysql/my.cnf
Redis 配置/opt/homebrew/etc/redis.conf
PHP 错误日志~/Sites/logs/php/php_errors.log
Nginx 访问日志~/Sites/logs/nginx/*.access.log
项目根目录~/Sites/
C. 参考资源
  • Homebrew 官网: https://brew.sh
  • PHP 官方文档: https://www.php.net/manual/
  • MySQL 官方文档: https://dev.mysql.com/doc/
  • Redis 官方文档: https://redis.io/documentation
  • Nginx 官方文档: https://nginx.org/en/docs/

总结

恭喜!你已经成功在 macOS 上配置了完整的 PHP 7.4 开发环境,包括:

✅ PHP 7.4.33 - 完整的 PHP 开发环境 ✅ MySQL 8.4.x - 关系型数据库 ✅ Redis 8.4.x - 高性能缓存系统 ✅ Nginx 1.29.x - Web 服务器 ✅ igbinary - 二进制序列化加速 ✅ LZF - 轻量级压缩 ✅ .test 域名 - 专业的本地开发域名

下一步建议
  1. 熟悉环境:访问 http://local.test/final_verification.php 验证所有功能
  2. 创建项目:在 ~/Sites/projects/ 目录下创建你的项目
  3. 添加域名:使用域名管理工具添加新项目域名
  4. 学习优化:根据项目需求调整配置优化性能

祝你开发愉快!🚀

目录

  1. 环境概览
  2. 技术栈版本
  3. 目录结构
  4. 前置准备
  5. 检查系统环境
  6. 检查 Homebrew 是否已安装
  7. 检查 Homebrew 版本
  8. 检查系统架构
  9. 更新 Homebrew
  10. 更新 Homebrew
  11. 检查是否有待升级的包
  12. 阶段 1:安装 Homebrew 和基础组件
  13. 1.1 安装 Homebrew(如未安装)
  14. 安装 Homebrew(官方命令)
  15. 添加 Homebrew 到 PATH(Apple Silicon Mac)
  16. 1.2 安装基础依赖
  17. 安装常用工具
  18. 阶段 2:安装 PHP 7.4
  19. 2.1 添加 PHP 扩展仓库
  20. 添加 PHP 版本管理仓库
  21. 更新 brew
  22. 2.2 安装 PHP 7.4
  23. 安装 PHP 7.4(包含常用扩展)
  24. 验证安装
  25. 2.3 配置环境变量
  26. 编辑 shell 配置文件
  27. 添加以下内容:
  28. 使配置生效
  29. 2.4 验证 PHP 安装
  30. 检查 PHP 版本
  31. 检查已加载的扩展
  32. 查看 PHP 配置信息
  33. 阶段 3:安装和配置 MySQL
  34. 3.1 安装 MySQL 8.4
  35. 安装 MySQL 8.4
  36. 启动 MySQL 服务
  37. 验证 MySQL 运行
  38. 3.2 MySQL 安全配置
  39. 运行安全配置脚本
  40. 按照提示完成配置:
  41. 1. 设置 VALIDATE PASSWORD component(可选)
  42. 2. 设置 root 密码
  43. 3. 移除匿名用户
  44. 4. 禁止 root 远程登录
  45. 5. 移除 test 数据库
  46. 6. 重新加载权限表
  47. 3.3 创建开发数据库和用户
  48. 连接 MySQL
  49. 在 MySQL 命令行中执行:
  50. 3.4 验证 MySQL 连接
  51. 使用 root 用户连接
  52. 使用开发用户连接
  53. 3.5 MySQL 配置优化(可选)
  54. 编辑 MySQL 配置文件
  55. 添加优化配置:
  56. 字符集配置
  57. InnoDB 配置
  58. 连接配置
  59. 日志配置
  60. 阶段 4:安装和配置 Nginx
  61. 4.1 安装 Nginx
  62. 安装 Nginx
  63. 启动 Nginx 服务
  64. 验证 Nginx 运行
  65. 测试配置语法
  66. 4.2 配置 Nginx 虚拟主机
  67. 4.2.1 创建主开发环境配置
  68. 创建主项目目录
  69. 设置权限
  70. 创建配置文件
  71. 4.2.2 创建多项目配置
  72. 创建多项目目录
  73. 设置权限
  74. 创建多项目配置
  75. 博客项目
  76. 商城项目
  77. 管理后台
  78. 4.3 重启 Nginx
  79. 测试配置语法
  80. 重启服务
  81. 查看服务状态
  82. 阶段 5:安装和配置 Redis 服务器
  83. 5.1 安装 Redis 服务器
  84. 安装 Redis
  85. 启动 Redis 服务
  86. 验证 Redis 运行
  87. 测试 Redis 连接
  88. 5.2 Redis 基本配置
  89. 编辑 Redis 配置文件
  90. 常用配置:
  91. 内存限制
  92. 日志配置
  93. RDB 持久化配置
  94. 阶段 6:PHP 扩展配置(Redis 相关)
  95. 6.1 安装前的系统依赖
  96. 确保 Homebrew 已更新
  97. 安装编译工具(如未安装)
  98. 6.2 安装 igbinary 扩展
  99. 安装 igbinary 扩展
  100. 6.3 安装 LZF 压缩扩展
  101. 安装 LZF 扩展
  102. 6.4 安装 Redis 扩展(整合版)
  103. 安装 Redis 扩展
  104. 6.5 验证扩展安装
  105. 检查扩展是否正确加载
  106. 应该显示:
  107. igbinary
  108. lzf
  109. redis
  110. 6.6 PHP.ini 基础配置
  111. 编辑 PHP 配置文件
  112. 关键配置:
  113. 6.7 PHP-FPM 配置
  114. 编辑 PHP-FPM 配置
  115. 配置内容:
  116. 6.8 重启 PHP-FPM 服务
  117. 重启 PHP-FPM 服务
  118. 阶段 7:域名配置
  119. 7.1 为什么使用 .test 域名
  120. 7.2 配置 hosts 文件
  121. 编辑 hosts 文件
  122. 添加以下内容:
  123. 7.3 验证域名解析
  124. 测试域名解析
  125. 测试 HTTP 访问
  126. 阶段 8:服务管理和验证
  127. 8.1 服务管理命令
  128. 查看服务状态
  129. 检查端口占用
  130. 8.2 创建测试页面
  131. 8.2.1 PHP 信息页面
  132. 8.2.2 数据库连接测试
  133. 8.2.3 Redis 连接测试
  134. 8.2.4 完整环境验证
  135. 8.3 浏览器访问测试
  136. 主环境验证
  137. PHP 信息
  138. 数据库测试
  139. Redis 测试
  140. 多项目
  141. 常用命令速查
  142. 服务管理
  143. 启动服务
  144. 停止服务
  145. 重启服务
  146. 查看所有服务状态
  147. 检查特定端口
  148. PHP 相关
  149. PHP 版本
  150. 已加载的扩展
  151. PHP 配置信息
  152. 查找 php.ini 位置
  153. 特定扩展版本
  154. MySQL 相关
  155. 连接 MySQL
  156. 查看数据库
  157. 选择数据库
  158. 查看表
  159. MySQL 版本
  160. 重启 MySQL
  161. Redis 相关
  162. 测试连接
  163. Redis 命令行
  164. 基本操作
  165. 查看 Redis 信息
  166. 清空所有数据
  167. Nginx 相关
  168. 测试配置语法
  169. 重载配置
  170. 停止 Nginx
  171. 查看 Nginx 版本
  172. 检查配置
  173. 日志查看
  174. 实时查看日志
  175. 查看错误日志
  176. Nginx 访问日志
  177. 故障排除
  178. 问题 1:Nginx 启动失败
  179. 检查并修复 Nginx 配置
  180. 查看详细错误
  181. 确保使用实际用户名而非变量
  182. 错误示例:root /Users/$USER/Sites/localhost;
  183. 正确示例:root /Users/你的用户名/Sites/localhost;
  184. 问题 2:PHP 扩展未加载
  185. 检查扩展是否安装
  186. 检查 php.ini 配置
  187. 确认扩展文件存在
  188. 重启 PHP-FPM
  189. 问题 3:MySQL 连接失败
  190. 检查 MySQL 服务状态
  191. 重启 MySQL
  192. 检查 MySQL 错误日志
  193. 验证用户名密码
  194. 问题 4:.dev 域名无法访问
  195. hosts 文件中使用.test 后缀
  196. 问题 5:端口被占用
  197. 查找占用端口的进程
  198. 终止占用进程
  199. 或使用其他端口
  200. 修改 Nginx 配置:listen 8080;
  201. 问题 6:PHP-FPM 未运行
  202. 检查 PHP-FPM 服务
  203. 手动启动
  204. 检查错误日志
  205. 测试 PHP-FPM 配置
  206. 问题 7:Redis 连接失败
  207. 检查 Redis 服务状态
  208. 启动 Redis
  209. 测试连接
  210. 检查 Redis 日志
  211. 最佳实践
  212. 1. 定期维护
  213. 每周检查服务状态
  214. 定期查看日志
  215. 定期清理过期日志
  216. 2. 性能优化
  217. PHP 优化
  218. php.ini
  219. MySQL 优化
  220. my.cnf
  221. Redis 优化
  222. redis.conf
  223. 3. 安全管理
  224. MySQL 安全
  225. 文件权限
  226. 项目目录权限
  227. 日志目录权限
  228. 禁止 Web 访问敏感文件
  229. 在 nginx 配置中添加:
  230. 4. 开发工作流
  231. 本地开发
  232. 1. 启动所有服务
  233. 2. 验证服务状态
  234. 3. 测试开发环境
  235. 4. 开始开发...
  236. 部署前测试
  237. 1. 检查配置语法
  238. 2. 重启所有服务
  239. 3. 全面测试
  240. 5. 备份和恢复
  241. 数据库备份
  242. 完整备份
  243. 单个数据库备份
  244. 恢复数据库
  245. 配置备份
  246. 备份所有配置
  247. 附录
  248. A. Homebrew 常用命令
  249. 安装包
  250. 卸载包
  251. 搜索包
  252. 查看已安装的包
  253. 更新包
  254. 清理旧版本
  255. 查看信息
  256. B. 常用文件位置
  257. C. 参考资源
  258. 总结
  259. 下一步建议
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • C++ explicit 关键字详解:作用、原因与使用
  • Llama-2-7b 昇腾 NPU 性能测评与部署优化指南
  • AM32 无人机电调源码架构与工作原理解析
  • C++ 红黑树:原理、旋转与完整实现
  • 自学网络安全:学习误区、路线规划与资源推荐
  • Java 房屋租赁系统的设计与实现
  • 基于大型语言模型的智能 Agent:发展历程、架构与 Langchain 实现
  • 前端权限控制架构设计:告别硬编码判断
  • 算法实战:快速选择解决第 K 大元素与最小 K 个数问题
  • 时序数据库选型指南:Apache IoTDB 核心优势分析
  • 解决 PKIX path building failed: SSL 证书导入 Java 信任库实战
  • 县域烟花禁燃监管实践:Java 调用高德地图盘点销售点
  • 无 Root 权限下 Termux+Proot 部署 HomeAssistant 的权限挑战与优化
  • 算法基础:特性、复杂度与经典实现解析
  • Python 实战:2025 年中秋月相计算与月球可视化
  • Vivado FPGA 逻辑设计实战:同步 FIFO 全流程解析
  • 西门子 S7-1200FC PLC 与松下机器人 Profinet 通信及外部自动控制实战
  • Python 爬虫基础与实战指南
  • Python 空间注意力神经网络 SANN 架构设计与实战
  • 二分查找实战:山脉数组的峰顶索引与寻找峰值

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online