在 Linux 上编译

要在典型的 Linux 环境中编译 PHP 扩展,有一些先决条件:

  • 基本的 Unix 技能(能够操作 make 和 C 编译器)
  • ANSI C 编译器
  • 要编译的 PHP 扩展的源代码

通常,有两种方法可以编译 PHP 扩展。你可以将扩展静态编译为 PHP 二进制文件,或者将其编译为启动时由 PHP 二进制文件加载的共享模块。共享模块更有可能,因为它们允许你添加或删除扩展而无需重建整个 PHP 二进制文件。此示例重点介绍共享选项。

如果你通过软件包管理器(apt-get installyum install 等)安装了 PHP,则需要安装 PHP 的 -dev 软件包,其中包含必要的 PHP 头文件和 phpize 脚本,以便构建环境正常工作。该软件包的名称可能类似于 php5-devphp7-dev,但请确保使用你的软件包管理器使用你的发行版存储库搜索相应的名称。它们可以不同。

如果你从源代码构建 PHP,则系统中最有可能存在的头文件( 通常/usr/include/usr/local/include 中)。

编译的步骤

在检查以确保你具备编译所需的所有先决条件后,你可以前往 pecl.php.net ,选择要编译的扩展,并下载 tar 球。

  1. 打开焦油球(例如 tar xfvz yaml-2.0.0RC8.tgz
  2. 输入解压缩存档的目录并运行 phpize
  3. 你现在应该看到一个新创建的 .configure 脚本,如果一切顺利,运行 ./configure
  4. 现在你需要运行 make,它将编译扩展
  5. 最后,make install 会将编译的扩展二进制文件复制到你的扩展目录

make install 步骤通常会为你提供复制扩展的安装路径。这通常是/usr/lib/,例如它可能像/usr/lib/php5/20131226/yaml.so。但这取决于你的 PHP 配置(即 --with-prefix)和特定的 API 版本。API 编号包含在路径中,以便在不同位置保留为不同 API 版本构建的扩展。

在 PHP 中加载扩展

要在 PHP 中加载扩展,请找到适合的 SAPI 加载的 php.ini 文件,然后添加 extension=yaml.so 行,然后重新启动 PHP。当然,将 yaml.so 更改为你安装的实际扩展名。

对于 Zend 扩展,你需要提供共享对象文件的完整路径。但是,对于普通的 PHP 扩展,此路径来自加载配置中的 extension_dir 指令,或者在初始设置期间从 $PATH 环境派生。