99
1010FrankenPHP 支持 PHP 8.2 及更高版本。
1111
12+ ### 使用 Homebrew (Linux 和 Mac)
13+
14+ 安装与 FrankenPHP 兼容的 libphp 版本的最简单方法是使用 [ Homebrew PHP] ( https://github.com/shivammathur/homebrew-php ) 提供的 ZTS 包。
15+
16+ 首先,如果尚未安装,请安装 [ Homebrew] ( https://brew.sh ) 。
17+
18+ 然后,安装 PHP 的 ZTS 变体、Brotli(可选,用于压缩支持)和 watcher(可选,用于文件更改检测):
19+
20+ ``` console
21+ brew install shivammathur/php/php-zts brotli watcher
22+ brew link --overwrite --force shivammathur/php/php-zts
23+ ```
24+
25+ ### 通过编译 PHP
26+
27+ 或者,你可以按照以下步骤,使用 FrankenPHP 所需的选项从源代码编译 PHP。
28+
1229首先,[ 获取 PHP 源代码] ( https://www.php.net/downloads.php ) 并提取它们:
1330
1431``` console
1532tar xf php-*
1633cd php-*/
1734```
1835
19- 然后,为你的平台配置 PHP.
20-
21- 这些参数是必需的,但你也可以添加其他编译参数(例如额外的扩展)。
36+ 然后,运行适用于你平台的 ` configure ` 脚本。
37+ 以下 ` ./configure ` 标志是必需的,但你可以添加其他标志,例如编译扩展或附加功能。
2238
23- ### Linux
39+ #### Linux
2440
2541``` console
2642./configure \
@@ -30,29 +46,26 @@ cd php-*/
3046 --enable-zend-max-execution-timers
3147```
3248
33- ### Mac
49+ #### Mac
3450
35- 使用 [ Homebrew] ( https://brew.sh/ ) 包管理器安装 ` libiconv ` 、 ` bison ` 、 ` re2c ` 和 ` pkg-config ` :
51+ 使用 [ Homebrew] ( https://brew.sh/ ) 包管理器安装所需的和可选的依赖项 :
3652
3753``` console
38- brew install libiconv bison re2c pkg-config
54+ brew install libiconv bison brotli re2c pkg-config watcher
3955echo 'export PATH="/opt/homebrew/opt/bison/bin:$PATH"' >> ~/.zshrc
4056```
4157
4258然后运行 ` ./configure ` 脚本:
4359
4460``` console
4561./configure \
46- --enable-embed=static \
62+ --enable-embed \
4763 --enable-zts \
4864 --disable-zend-signals \
49- --disable-opcache-jit \
50- --enable-static \
51- --enable-shared=no \
5265 --with-iconv=/opt/homebrew/opt/libiconv/
5366```
5467
55- ## 编译并安装 PHP
68+ #### 编译 PHP
5669
5770最后,编译并安装 PHP:
5871
@@ -61,30 +74,36 @@ make -j"$(getconf _NPROCESSORS_ONLN)"
6174sudo make install
6275```
6376
64- ## 编译 Go 应用
77+ ## 安装可选依赖项
6578
66- 你现在可以使用 Go 库并编译我们的 Caddy 构建:
79+ 某些 FrankenPHP 功能依赖于必须安装的可选系统依赖项。
80+ 或者,可以通过向 Go 编译器传递构建标签来禁用这些功能。
6781
68- ``` console
69- curl -L https://github.com/php/frankenphp/archive/refs/heads/main.tar.gz | tar xz
70- cd frankenphp-main/caddy/frankenphp
71- CGO_CFLAGS=$(php-config --includes) CGO_LDFLAGS="$(php-config --ldflags) $(php-config --libs)" go build
72- ```
82+ | 功能 | 依赖项 | 用于禁用的构建标签 |
83+ | --------------------------| ------------------------------------------------------------------------| -------------------|
84+ | Brotli 压缩 | [ Brotli] ( https://github.com/google/brotli ) | nobrotli |
85+ | 文件更改时重启 worker | [ Watcher C] ( https://github.com/e-dant/watcher/tree/release/watcher-c ) | nowatcher |
86+
87+ ## 编译 Go 应用
88+
89+ 你现在可以构建最终的二进制文件。
7390
7491### 使用 xcaddy
7592
76- 你可以使用 [ xcaddy] ( https://github.com/caddyserver/xcaddy ) 来编译 [ 自定义 Caddy 模块] ( https://caddyserver.com/docs/modules/ ) 的 FrankenPHP:
93+ 推荐的方法是使用 [ xcaddy] ( https://github.com/caddyserver/xcaddy ) 来编译 FrankenPHP。
94+ ` xcaddy ` 还允许轻松添加 [ 自定义 Caddy 模块] ( https://caddyserver.com/docs/modules/ ) 和 FrankenPHP 扩展:
7795
7896``` console
7997CGO_ENABLED=1 \
80- XCADDY_GO_BUILD_FLAGS="-ldflags '-w -s'" \
98+ XCADDY_GO_BUILD_FLAGS="-ldflags='-w -s' -tags=nobadger,nomysql,nopgx" \
99+ CGO_CFLAGS=$(php-config --includes) \
100+ CGO_LDFLAGS="$(php-config --ldflags) $(php-config --libs)" \
81101xcaddy build \
82102 --output frankenphp \
83103 --with github.com/dunglas/frankenphp/caddy \
84- --with github.com/dunglas/caddy-cbrotli \
85104 --with github.com/dunglas/mercure/caddy \
86105 --with github.com/dunglas/vulcain/caddy
87- # Add extra Caddy modules here
106+ # 在这里添加额外的 Caddy 模块和 FrankenPHP 扩展
88107```
89108
90109> [ !TIP]
@@ -96,3 +115,13 @@ xcaddy build \
96115> 请将 ` XCADDY_GO_BUILD_FLAGS ` 环境变量更改为如下类似的值
97116> ` XCADDY_GO_BUILD_FLAGS=$'-ldflags "-w -s -extldflags \'-Wl,-z,stack-size=0x80000\'"' `
98117> (根据你的应用需求更改堆栈大小)。
118+
119+ ### 不使用 xcaddy
120+
121+ 或者,可以通过直接使用 ` go ` 命令来编译 FrankenPHP 而不使用 ` xcaddy ` :
122+
123+ ``` console
124+ curl -L https://github.com/php/frankenphp/archive/refs/heads/main.tar.gz | tar xz
125+ cd frankenphp-main/caddy/frankenphp
126+ CGO_CFLAGS=$(php-config --includes) CGO_LDFLAGS="$(php-config --ldflags) $(php-config --libs)" go build -tags=nobadger,nomysql,nopgx
127+ ```
0 commit comments