TypePHP 编译器 https://swoole.com/aot/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

2.1 KiB

PHP builder

For mode: bin, TypePHP separates the artifact type from the PHP SAPI:

mode: bin
sapi: [embed, cli, fpm]
php-builder:
  extensions: [swoole, mongodb]
  zts: on

sapi selects one or more process interfaces. embed is the default. cli and fpm are not modes and always require php-builder because a host PHP installation does not provide the static build inputs needed by these targets.

php-builder means that TypePHP builds a private PHP runtime from an official php-src archive. The result does not depend on the host PHP runtime, but it does use development libraries supplied by the operating system. The original php-src cache is left unchanged; external PECL extensions are injected into a derived source tree. Extension requirements are merged from the explicit extensions list, project sources, YAML dependencies, and embedded Composer metadata, and then translated to PHP configure options.

The command-line equivalent is:

bin/tpc.php project.yml \
  --sapi=embed,cli,fpm \
  --php-builder='extensions: [swoole, mongodb]; zts: on'

zts accepts on or off. php-builder.sapi is invalid; SAPI selection is always the independent top-level sapi option.

Default Embed behavior

Without php-builder, mode: bin plus sapi: embed preserves the traditional behavior and links the host Embed library (libphp.so or libphp.dylib). If it is unavailable on Linux or macOS, an interactive invocation asks whether to enable php-builder. In a non-interactive environment, choose explicitly:

bin/tpc.php project.yml \
  --php-builder='extensions: []; zts: off'

Declining the prompt leaves no usable Embed runtime and stops the build.

Cache and proxy

Downloaded sources and private runtimes are cached under ~/.typephp. Compatible runtimes are reused across application builds. --proxy is a global network setting rather than a php-builder field; PHP and PECL metadata and archives, and any other TypePHP network transfers, use the configured HTTP(S) or SOCKS proxy.

bin/tpc.php project.yml --proxy=socks5h://127.0.0.1:1080 \
  --php-builder='extensions: []; zts: off'