,

Apple M1 芯片的 Mac 上编译安装 RedisPHP 7.3 时,可能会遇到各种编译错误。主要的问题可能与架构兼容性、依赖库、编译选项等有关。以下是一些排查和解决 RedisPHP 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 会帮助你管理依赖项,如 libzopenssl 等。

2. 安装 Redis

2.1 使用 Homebrew 安装 Redis

如果你只是想快速安装 Redis,并且不需要编译源码,可以通过 Homebrew 来安装 Redis。Homebrew 在 M1 芯片上有良好的支持。

brew install redis

安装完成后,启动 Redis 服务:

brew services start redis

2.2 手动编译安装 Redis

如果需要手动编译 Redis,可以通过以下步骤:

  1. 下载 Redis 的源代码:
    wget http://download.redis.io/redis-stable.tar.gz
    tar -xzvf redis-stable.tar.gz
    cd redis-stable
    
  2. 安装所需的依赖项(如有需要):
    brew install tcl
    
  3. 编译 Redis:
    make
    
  4. 安装 Redis:
    sudo make install
    

如果在 makemake install 过程中遇到错误,可以查看输出信息,特别是与 依赖权限编译选项 相关的错误。

3. 编译 PHP 7.3

编译 PHP 7.3 可能遇到一些依赖项或编译器选项问题。以下是可能的排查步骤:

3.1 安装 PHP 所需的依赖项

在编译 PHP 之前,确保系统中安装了必要的依赖库,如 libxml2libpnglibjpeglibfreetypeopenssl 等。这些库通常通过 Homebrew 安装。

brew install libxml2 libpng jpeg freetype openssl

3.2 编译 PHP 7.3

  1. 下载 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
    
  2. 配置编译选项

    使用 --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
    
    • 确保指定了正确的 OpenSSLzlib 路径。
    • 根据需要加入其他选项,确保包含常用的扩展。
  3. 编译 PHP
    make -j$(sysctl -n hw.ncpu)  # 使用多核加速编译
    

    如果在这一步出现错误,仔细查看错误信息,并根据错误提示调整配置选项或安装缺失的依赖。

  4. 安装 PHP
    sudo make install
    

3.3 常见编译错误及解决方法

  1. 错误:找不到 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
    
  2. 错误:找不到 libpnglibjpegfreetype 等依赖库
    安装相关库:

    brew install libpng jpeg freetype
    

    然后重新配置 PHP 编译选项:

    ./configure --with-png-dir=/opt/homebrew/opt/libpng
    
  3. 错误:make 失败或编译超时
    如果 make 过程出错,使用 make clean 清除之前的编译文件,然后重试:

    make clean
    make -j$(sysctl -n hw.ncpu)
    
  4. 内存不足或超时问题
    如果编译时遇到内存不足或超时问题,可以尝试使用较少的并发编译:

    make -j2  # 降低并行编译的进程数
    

3.4 使用 PHP 版本管理工具

如果不想手动编译 PHP,推荐使用 phpenvbrew 安装不同版本的 PHP:

  • 安装 PHP 7.3:
    brew install php@7.3
    
  • 使用 phpenv 管理不同版本的 PHP:
    brew install phpenv
    

4. 查看编译错误日志

如果遇到具体的编译错误,查看错误日志并根据错误信息进行排查。通常,编译错误会告诉你缺少什么依赖,或者哪些选项未配置正确。你可以将错误信息提供给搜索引擎或开发社区,寻找相似问题的解决方案。


总结

  1. 检查系统环境:确保 macOS 和 Xcode 是最新的。
  2. 安装依赖项:确保安装了编译所需的依赖,如 libxml2opensslzlib 等。
  3. 使用 Homebrew 安装 Redis 或 PHP,避免手动编译。
  4. 编译 PHP 时指定正确的库路径:M1 Mac 可能需要特别指定 OpenSSL 和其他依赖的路径。
  5. 查看错误信息:根据编译错误的具体提示,逐步解决缺失依赖、配置问题。

通过这些步骤,你应该能够成功排查并解决编译 RedisPHP 7.3 时遇到的问题。