操作系统准备

改进 PHP 需要一个可工作的构建环境来测试更改,以下部分介绍了如何设置一个可工作的构建环境。

您的构建环境应该有一个合适的工具链,包括一个可工作的 C 编译器,对于不在 Microsoft Windows 上工作的人,您需要一个可工作的、兼容的 autotools 安装,并且至少需要一个共享的 zlib 副本。

对于大多数类 Unix 操作系统,可能需要一些外部依赖项才能完成构建;如果构建由于缺少头文件或库而失败,发出以下命令的变体应该可以解决这些依赖项,从而允许构建继续

  • [sudo] yum|apt-get|ports install package[-dev[el]]

对于在 Ubuntu Linux 上工作的人,您可以运行以下命令来自动安装依赖项

  • sudo apt-get build-dep php5
如果 扩展 的编译由于缺少依赖项而失败,Ubuntu Linux 可以尝试通过发出以下命令来自动解决这些依赖项
  • sudo apt-get build-dep php5-extname

下表显示了 Microsoft Windows 用户构建 PHP 所需的内容

PHP Visual C++ MS SDK DEPS PHP SDK
5.3 Visual Studio 2008 6.1 x86 这里
5.4 Visual Studio 2008 6.1 x86 这里
5.5 Visual Studio 2008 6.1 x86 这里
5.5 Visual Studio 2012 N/A x86x64 这里

注意: 如果需要 Windows SDK,建议在安装 Visual Studio 之前 安装 SDK。

工作区准备

Windows 用户现在应该将 PHP SDK 下载并解压缩到他们的工作区,并在适当的 Visual Studio 控制台中执行以下命令

Visual Studio 2008

  • setenv /xp /Release /x86
Visual Studio 2008 和 2012
  • cd C:\path-to-workspace
  • bin\phpsdk_setvars.bat
  • bin\phpsdk_buildtree.bat phpdev
Windows 现在应该更改到目录 C:\path-to-workspace\phpdev\VCXX\XARCH,并将其视为当前构建的工作区的根目录。

下一步是每个人都通过 git 获取版本化的 PHP 源代码

  • git clone -b BRANCH https://github.com/php/php-src .
BRANCH 应替换为适当的分支名称,例如 PHP-5.5

此时,您有一个可工作的构建环境和您选择的 PHP 分支的原始源代码,在您更改任何内容之前,最好创建一个新分支并切换到它,为您的惊人更改做好准备

  • git checkout -b my-awesome-changes

构建您的开发 PHP

所有操作系统现在都汇聚在(几乎没有区别)构建过程的其余部分的相同解决方案上

  • buildconf: generates the configure script for PHP
  • configure: configures the build of PHP and creates Makefile
  • make: builds PHP
  • make test: runs testsuite
  • make install: installs PHP

对于 Microsoft Windows 操作系统,这些命令如下所示

  • buildconf
  • configure --with-prefix=C:\my-awesome-php
  • nmake
  • nmake test
  • nmake install

而对于我们其他人来说,这些命令如下所示

  • ./buildconf
  • ./configure --prefix=/opt/my-awesome-php
  • make
  • make test
  • make install

configure 脚本能够自定义 PHP 的几乎所有方面,要在控制台中获取帮助,请将 --help 作为 configure 的唯一参数传递

configure 执行时,它会将传递的选项保存到可重用的 config.nice 中,该选项在调用时会执行 configure

构建成功完成后,建议运行测试套件,这将有助于您识别工作中的回归问题,运行测试套件可能需要一段时间;出去跑跑步,或者吃个汉堡。

也可以通过以下方式运行一组(目录)测试

  • [n]make test TESTS=sapi/cli

To Top