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.
61 lines
2.1 KiB
61 lines
2.1 KiB
# PHP builder
|
|
|
|
For `mode: bin`, TypePHP separates the artifact type from the PHP SAPI:
|
|
|
|
```yaml
|
|
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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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.
|
|
|
|
```bash
|
|
bin/tpc.php project.yml --proxy=socks5h://127.0.0.1:1080 \
|
|
--php-builder='extensions: []; zts: off'
|
|
```
|
|
|