,
在 Apple M1 芯片的 Mac 上编译安装 Redis 和 PHP 7.3 时,可能会遇到各种编译错误。主要的问题可能与架构兼容性、依赖库、编译选项等有关。以下是一些排查和解决 Redis 和 PHP 7.3 编译错误 的步骤:
1. 检查和确认系统环境
1.1 检查 macOS 版本
首先,确保你的 macOS 版本和 Xcode 工具链是最新的。M1 芯片的兼容性可能受到某些老版本 macOS 或 Xcode 的影响。可以使用以下命令检查版本:
sw_vers
xcode-select --version
如果 Xcode 工具链没有安装或版本过低,请更新:
xcode-select --install
1.2 安装 Homebrew
如果还没有安装 Homebrew,可以通过以下命令安装:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Homebrew 会帮助你管理依赖项,如 libz
、openssl
等。
2. 安装 Redis
2.1 使用 Homebrew 安装 Redis
如果你只是想快速安装 Redis,并且不需要编译源码,可以通过 Homebrew 来安装 Redis。Homebrew 在 M1 芯片上有良好的支持。
brew install redis
安装完成后,启动 Redis 服务:
brew services start redis
2.2 手动编译安装 Redis
如果需要手动编译 Redis,可以通过以下步骤:
- 下载 Redis 的源代码:
wget http://download.redis.io/redis-stable.tar.gz tar -xzvf redis-stable.tar.gz cd redis-stable
- 安装所需的依赖项(如有需要):
brew install tcl
- 编译 Redis:
make
- 安装 Redis:
sudo make install
如果在 make
或 make install
过程中遇到错误,可以查看输出信息,特别是与 依赖、权限 或 编译选项 相关的错误。
3. 编译 PHP 7.3
编译 PHP 7.3 可能遇到一些依赖项或编译器选项问题。以下是可能的排查步骤:
3.1 安装 PHP 所需的依赖项
在编译 PHP 之前,确保系统中安装了必要的依赖库,如 libxml2
、libpng
、libjpeg
、libfreetype
、openssl
等。这些库通常通过 Homebrew 安装。
brew install libxml2 libpng jpeg freetype openssl
3.2 编译 PHP 7.3
- 下载 PHP 7.3 源码:
wget https://www.php.net/distributions/php-7.3.x.tar.bz2 tar -xjvf php-7.3.x.tar.bz2 cd php-7.3.x
- 配置编译选项:
使用
--with-openssl
、--with-zlib
等选项配置 PHP 编译:./configure --prefix=/usr/local/php7.3 \ --with-openssl=/opt/homebrew/opt/openssl@1.1 \ --with-zlib=/opt/homebrew/opt/zlib \ --enable-mbstring \ --enable-fpm \ --with-curl \ --enable-soap \ --with-mysqli \ --with-pdo-mysql \ --enable-bcmath \ --enable-sockets
- 确保指定了正确的 OpenSSL 和 zlib 路径。
- 根据需要加入其他选项,确保包含常用的扩展。
- 编译 PHP:
make -j$(sysctl -n hw.ncpu) # 使用多核加速编译
如果在这一步出现错误,仔细查看错误信息,并根据错误提示调整配置选项或安装缺失的依赖。
- 安装 PHP:
sudo make install
3.3 常见编译错误及解决方法
- 错误:找不到 OpenSSL:
如果编译时提示找不到 OpenSSL,确保指定了正确的 OpenSSL 路径。对于 M1 Mac,OpenSSL 可能安装在/opt/homebrew/opt/openssl@1.1
,而不是/usr/local/opt/openssl
。./configure --with-openssl=/opt/homebrew/opt/openssl@1.1
- 错误:找不到
libpng
、libjpeg
、freetype
等依赖库:
安装相关库:brew install libpng jpeg freetype
然后重新配置 PHP 编译选项:
./configure --with-png-dir=/opt/homebrew/opt/libpng
- 错误:
make
失败或编译超时:
如果make
过程出错,使用make clean
清除之前的编译文件,然后重试:make clean make -j$(sysctl -n hw.ncpu)
- 内存不足或超时问题:
如果编译时遇到内存不足或超时问题,可以尝试使用较少的并发编译:make -j2 # 降低并行编译的进程数
3.4 使用 PHP 版本管理工具
如果不想手动编译 PHP,推荐使用 phpenv
或 brew
安装不同版本的 PHP:
- 安装 PHP 7.3:
brew install php@7.3
- 使用
phpenv
管理不同版本的 PHP:brew install phpenv
4. 查看编译错误日志
如果遇到具体的编译错误,查看错误日志并根据错误信息进行排查。通常,编译错误会告诉你缺少什么依赖,或者哪些选项未配置正确。你可以将错误信息提供给搜索引擎或开发社区,寻找相似问题的解决方案。
总结
- 检查系统环境:确保 macOS 和 Xcode 是最新的。
- 安装依赖项:确保安装了编译所需的依赖,如
libxml2
、openssl
、zlib
等。 - 使用 Homebrew 安装 Redis 或 PHP,避免手动编译。
- 编译 PHP 时指定正确的库路径:M1 Mac 可能需要特别指定 OpenSSL 和其他依赖的路径。
- 查看错误信息:根据编译错误的具体提示,逐步解决缺失依赖、配置问题。
通过这些步骤,你应该能够成功排查并解决编译 Redis 或 PHP 7.3 时遇到的问题。