侧边栏壁纸
  • 累计撰写 47 篇文章
  • 累计收到 0 条评论
PHP

手把手教你源码编译安装PHP及相关扩展

2022-8-9 / 0 评论 / 122 阅读
温馨提示:
本文最后更新于 2022-8-9,已超过半年没有更新,若内容或图片失效,请留言反馈。

说明

我这边用的是 Mac 操作系统 来演示, 下载的PHP版本 - 7.4.24

下载、解压

如果你本地有 wget 命令, 可以直接

wget https://www.php.net/distributions/php-7.4.24.tar.gz

当然, 你也可以 点击PHP官网 下载对应的PHP版本源码

下载完之后解压 tar -zxvf php-7.4.24.tar.gz, 为了方便之后需要调试 PHP 的 C 源码, 所以我把 php-7.4.24 文件夹复制放到 /Users/linshan/Container/C 目录下。

配置

PHP 初始的配置和安装过程被 configure 脚本中一系列命令行选项控制。可以通过 ./configure --help 命令了解 PHP 所有可用的编译选项及简短解释。

Linux 下安装软件的步骤:

  1. ./configure 执行配置选项(例如 --prefix 可以指定安装位置),判断硬件及操作系统平台,生成 Makefile 文件
  2. make 编译
  3. make install 安装
常用的配置选项
1. PHP 选项
  • –-prefix[=PREFIX] 安装路径的前缀,可以自定义,例如 /mysoft/php。默认安装在 /usr/local
  • –-with-config-file-path=PATH 设置 php.ini 的搜索路径。默认安装在 PREFIX/lib
  • –-disable-short-tags 默认禁用短形式的开始标签 <?
  • --enable-debug 使用调试符号编译。
2. PHP 扩展
  • –-enable-mbstring 开启 mbstring 多字节扩展
  • –-with-gd[=DIR] 激活 GD 支持,可以指定扩展位置。编译 GD 库需要libpnglibjpeg
  • –-with-pear 安装 PEAR 扩展。
  • –-with-zip[=DIR] 提供 zip 支持,[DIR]ZZIPlib 库安装路径。建议通过 通过 PECL 安装。
  • --enable-posix 开启 posix 扩展支持。
3. 进程控制扩展
  • –-enable-pcntl 开启 pcntl 进程控制扩展,只能编译安装。
4. 网络相关扩展
  • –-with-openssl[=DIR] 开启 OpenSSL 扩展,可以指定扩展位置
  • –-enable-ftp 开启 FTP 扩展
  • –-with-curl 支持 cURL
  • –-enable-sockets 开启 socket 扩展
  • –-enable-soap 支持 SOAP
  • –-enable-fpm 激活 FPM 支持
5. 数据库扩展
  • –-with-mysql=mysqlnd
  • –-with-mysqli=mysqlnd
  • –-with-pdo-mysql=mysqlnd

运行下配置, 用最简单的配置参数

./configure --prefix=/Users/linshan/Container/C/php-7.4.24/php74 --enable-debug --enable-mysqlnd --enable-posix --with-iconv=/usr/local/opt/libiconv

在此过程中可能会出现一些报错提示, 根据提示查看相关文档就能解决掉, 这里就不一一说明了。如果一切顺利, 大概会展示下图信息

编译、安装

运行如下命令

make && make install

不出意外, 你会看到如下输出:

此时, 编译安装完成!我们通过 PHP 命令验证下是否安装成功:

/Users/linshan/Container/C/php-7.4.24/php74/bin/php -v

源码安装 swoole 扩展

  1. 首先下载 swoole 源码, 你也可以到 https://github.com/swoole/swoole-src git 下载

    git clone git@github.com:swoole/swoole-src.git
  2. 进入 swoole-src 目录

    cd swoole-src
  3. 通过执行 phpize 命令生成 swoole 安装的 configure 文件

    /Users/linshan/Container/C/php-7.4.24/php74/bin/phpize

    一切顺利的话, 会生成configure执行文件, 这样就可以配置swoole选项了

  4. 接下来配置 swoole

    ./configure --with-php-config=/Users/linshan/Container/C/php-7.4.24/php74/bin/php-config
  5. 编译安装

    make && make install

  1. 将扩展加入到 php.ini 配置文件, 由于编译安装后并没有设置 php.ini 相关信息, 所以理论上应该是没有该文件的。可以先看看安装在哪个目录
    /Users/linshan/Container/C/php-7.4.24/php74/bin/php -i |grep php.ini

然后我们将 /Users/linshan/Container/C/php-7.4.24 目录下的 php.ini-developmentphp.ini-production 配置文件拷贝到 /Users/linshan/Container/C/php-7.4.24/php74/lib 目录下并重命名为 php.ini

打开 php.ini 文件, 将 swoole 扩展加入到配置中 => extension=swoole.so

我们看下是否有安装成功 swoole 扩展

/Users/linshan/Container/C/php-7.4.24/php74/bin/php -m

可以看到是安装成功的, 然后我们可以看看 swoole 相关信息

/Users/linshan/Container/C/php-7.4.24/php74/bin/php --ri swoole

到此, 整个源码编译安装就完成了, 相关的扩展也是类似方式, 安装过程中遇到的环境或软件扩展报错基本都不复杂, 相对容易解决。

评论一下?

OωO
取消