Skip to content

环境变量列表

本页面的环境变量列表中所提到的所有环境变量都具有默认值,除非另有说明。你可以通过设置这些环境变量来覆盖默认值。

一般情况下,你不需要修改任何以下环境变量,因为它们已经被设置为最佳值。 但是,如果你有特殊需求,你可以通过设置这些环境变量来满足你的需求(比如你需要调试不同编译参数下的 PHP 性能表现)。

如需使用自定义环境变量,你可以在终端中使用 export 命令或者在命令前直接设置环境变量,例如:

shell
# export 方式
export SPC_CONCURRENCY=4
bin/spc build mbstring,pcntl --build-cli

# 直接设置方式
SPC_CONCURRENCY=4 bin/spc build mbstring,pcntl --build-cli

通用环境变量

通用环境变量是所有构建目标都可以使用的环境变量。

var namedefault valuecomment
BUILD_ROOT_PATH{pwd}/buildroot编译目标的根目录
BUILD_LIB_PATH{pwd}/buildroot/lib编译依赖库的根目录
BUILD_INCLUDE_PATH{pwd}/buildroot/include编译依赖库的头文件目录
BUILD_BIN_PATH{pwd}/buildroot/bin编译依赖库的二进制文件目录
PKG_ROOT_PATH{pwd}/pkgroot闭源或预编译工具下载后安装的目录
SOURCE_PATH{pwd}/source编译项目的源码解压缩目录
DOWNLOAD_PATH{pwd}/downloads下载的文件存放目录
SPC_CONCURRENCY取决于当前 CPU 核心数量并行编译的数量
SPC_SKIP_PHP_VERSION_CHECK设置为 yes 时,跳过扩展对 PHP 版本的检查

系统特定变量

这些环境变量是特定于系统的,它们只在特定的系统上才会生效。

Windows

var namedefault valuecomment
PHP_SDK_PATH{pwd}\php-sdk-binary-toolsPHP SDK 工具的安装目录
UPX_EXEC$PKG_ROOT_PATH\bin\upx.exeUPX 压缩工具的路径
SPC_MICRO_PATCHESstatic_extensions_win32,cli_checks,disable_huge_page,vcruntime140,win32,zend_stream,cli_static使用的 phpmicro patches

macOS

var namedefault valuecomment
CCclangC 编译器
CXXclang++C++ 编译器
SPC_DEFAULT_C_FLAGS--target=arm64-apple-darwin--target=x86_64-apple-darwin默认 C 编译标志(与 CFLAGS 不同)
SPC_DEFAULT_CXX_FLAGS--target=arm64-apple-darwin--target=x86_64-apple-darwin默认 C++ 编译标志(与 CXXFLAGS 不同)
SPC_CMD_PREFIX_PHP_BUILDCONF./buildconf --force编译 PHP buildconf 命令前缀
SPC_CMD_PREFIX_PHP_CONFIGURE./configure --prefix= --with-valgrind=no --enable-shared=no --enable-static=yes --disable-all --disable-cgi --disable-phpdbg编译 PHP configure 命令前缀
SPC_CMD_PREFIX_PHP_MAKEmake -j$SPC_CONCURRENCY编译 PHP make 命令前缀
SPC_CMD_VAR_PHP_CONFIGURE_CFLAGS$SPC_DEFAULT_C_FLAGS -Werror=unknown-warning-optionPHP configure 命令的 CFLAGS 变量
SPC_CMD_VAR_PHP_CONFIGURE_CPPFLAGS-I$BUILD_INCLUDE_PATHPHP configure 命令的 CPPFLAGS 变量
SPC_CMD_VAR_PHP_CONFIGURE_LDFLAGS-L$BUILD_LIB_PATHPHP configure 命令的 LDFLAGS 变量
SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS-g0 -Os-g -O0(当使用 --no-strip 时为后者)PHP make 命令的 EXTRA_CFLAGS 变量
SPC_CMD_VAR_PHP_MAKE_EXTRA_LIBS-lresolvPHP make 命令的额外 EXTRA_LIBS 变量
SPC_MICRO_PATCHESstatic_extensions_win32,cli_checks,disable_huge_page,vcruntime140,win32,zend_stream,macos_iconv使用的 phpmicro patches

Linux

var namedefault valuecomment
UPX_EXEC$PKG_ROOT_PATH/bin/upxUPX 压缩工具的路径
GNU_ARCHx86_64aarch64当前环境的 CPU 架构
CCAlpine: gcc, Other: $GNU_ARCH-linux-musl-gccC 编译器
CXXAlpine: g++, Other: $GNU_ARCH-linux-musl-g++C++ 编译器
ARAlpine: ar, Other: $GNU_ARCH-linux-musl-ar静态库工具
LDld.gold链接器
PATH/usr/local/musl/bin:/usr/local/musl/$GNU_ARCH-linux-musl/bin:$PATH系统 PATH
SPC_DEFAULT_C_FLAGSempty默认 C 编译标志
SPC_DEFAULT_CXX_FLAGSempty默认 C++ 编译标志
SPC_CMD_PREFIX_PHP_BUILDCONF./buildconf --force编译 PHP buildconf 命令前缀
SPC_CMD_PREFIX_PHP_CONFIGURELD_LIBRARY_PATH={ld_lib_path} ./configure --prefix= --with-valgrind=no --enable-shared=no --enable-static=yes --disable-all --disable-cgi --disable-phpdbg编译 PHP configure 命令前缀
SPC_CMD_PREFIX_PHP_MAKEmake -j$SPC_CONCURRENCY编译 PHP make 命令前缀
SPC_CMD_VAR_PHP_CONFIGURE_CFLAGS$SPC_DEFAULT_C_FLAGSPHP configure 命令的 CFLAGS 变量
SPC_CMD_VAR_PHP_CONFIGURE_CPPFLAGS-I$BUILD_INCLUDE_PATHPHP configure 命令的 CPPFLAGS 变量
SPC_CMD_VAR_PHP_CONFIGURE_LDFLAGS-L$BUILD_LIB_PATHPHP configure 命令的 LDFLAGS 变量
SPC_CMD_VAR_PHP_CONFIGURE_LIBS-ldl -lpthreadPHP configure 命令的 LIBS 变量
SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS-g0 -Os -fno-ident -fPIE-g -O0 -fno-ident -fPIE(当使用 --no-strip 时为后者)PHP make 命令的 EXTRA_CFLAGS 变量
SPC_CMD_VAR_PHP_MAKE_EXTRA_LIBSemptyPHP make 命令的额外 EXTRA_LIBS 变量
SPC_CMD_VAR_PHP_MAKE_EXTRA_LDFLAGS_PROGRAM-all-static(当使用 clang 时:-Xcompiler -fuse-ld=lld -all-staticmake 命令的额外 LDFLAGS 变量(用于编译程序)
SPC_NO_MUSL_PATHempty是否不插入 musl 工具链的 PATH(值为 yes 时不插入)
SPC_MICRO_PATCHESstatic_extensions_win32,cli_checks,disable_huge_page,vcruntime140,win32,zend_stream使用的 phpmicro patches

{ld_lib_path} 值为 /usr/local/musl/$GNU_ARCH-linux-musl/lib

FreeBSD

因 FreeBSD 系统的用户较少,我们暂时不提供 FreeBSD 系统的环境变量。

Unix

对于 macOS、Linux、FreeBSD 等 Unix 系统,以下环境变量是通用的。

var namedefault valuecomment
PATH$BUILD_BIN_PATH:$PATH系统 PATH
PKG_CONFIG_PATH$BUILD_LIB_PATH/pkgconfigpkg-config 的搜索路径
PKG_CONFIG$BUILD_BIN_PATH/pkg-configpkg-config 命令路径

编译依赖库的环境变量(仅限 Unix 系统)

从 2.2.0 开始,static-php-cli 对所有 macOS、Linux、FreeBSD 等 Unix 系统的编译依赖库的命令均支持自定义环境变量。

这样你就可以随时通过环境变量来调整编译依赖库的行为。例如你可以通过 xxx_CFLAGS=-O0 来设置编译 xxx 库的优化参数。

当然,不是每个依赖库都支持注入环境变量,我们目前提供了三个通配的环境变量,后缀分别为:

  • _CFLAGS: C 编译器的参数
  • _LDFLAGS: 链接器的参数
  • _LIBS: 额外的链接库

前缀为依赖库的名称,具体依赖库的名称以 lib.json 为准。其中,带有 - 的依赖库名称需要将 - 替换为 _

下面是一个替换 openssl 库编译的优化选项示例:

shell
openssl_CFLAGS="-O0"

库名称使用同 lib.json 中列举的名称,区分大小写。

TIP

当未指定相关环境变量时,除以下变量外,其余值均默认为空:

var namevar default value
pkg_config_CFLAGSmacOS: $SPC_DEFAULT_C_FLAGS -Wimplicit-function-declaration -Wno-int-conversion, Other: empty
pkg_config_LDFLAGSLinux: --static, Other: empty
imagemagick_LDFLAGSLinux: -static, Other: empty
imagemagick_LIBSmacOS: -liconv, Other: empty
ldap_LDFLAGS-L$BUILD_LIB_PATH
openssl_CFLAGSLinux: $SPC_DEFAULT_C_FLAGS, Other: empty
others...empty

下表是支持自定义以上三种变量的依赖库名称列表:

lib name
brotli
bzip
curl
freetype
gettext
gmp
imagemagick
ldap
libargon2
libavif
libcares
libevent
openssl

TIP

因为给每个库适配自定义环境变量是一项特别繁琐的工作,且大部分情况下你都不需要这些库的自定义环境变量,所以我们目前只支持了部分库的自定义环境变量。

如果你需要自定义环境变量的库不在上方列表,可以通过 GitHub Issue 来提出需求。

Released under the MIT License.