phpEnv 与 GrowthBook 完全不兼容,因前者是 Windows 图形化集成包,缺乏 Composer、必要扩展及完整运行时上下文;需改用 phpenv + Composer 工具链,在 Linux/macOS 或 WSL2 中编译带 openssl/curl/json 的 PHP 并正确配置 Web 服务器透传请求头。

phpEnv 和 GrowthBook 是两套完全不兼容的工具链,不能混用——前者是 Windows 下的「集成环境打包器」(Apache+MySQL+PHP 一键安装包),后者是面向现代 PHP 项目的开源功能开关与 A/B 测试 SDK。直接在 phpEnv 环境里装 GrowthBook 不仅无法发挥其核心能力,还会因缺少 Composer、扩展依赖和运行时上下文而失败。
phpEnv 根本不支持 Composer 和现代 PHP 包管理
phpEnv(指 www.phpenv.cn 发布的 Windows 图形化集成包)自带的 PHP 是预编译二进制,没有附带 composer.phar,也未启用 openssl、curl、json 等 GrowthBook 必需扩展。即使手动复制 composer.phar 进去,执行 composer require growthbook/growthbook 也会报错:
Could not open input file: composer.phar
或
The openssl extension is required for SSL/TLS protection
- 它不提供命令行
php全局可执行路径(只有php.exe躺在某个子目录里,且未加入 PATH) - 它的 Apache + PHP-FPM 模式下,
$_SERVER变量缺失关键字段(如HTTP_HOST、REQUEST_URI),导致 GrowthBook 的实验分流逻辑失效 - 没有 CLI 模式下的用户上下文模拟能力,A/B 测试的
$growthbook->getViewedExperiments()几乎无法触发
想用 GrowthBook,必须换用 phpenv + Composer 工具链
真正能跑 GrowthBook 的最小可行环境是:Linux/macOS 或 WSL2 下的 phpenv(注意拼写是 phpenv,不是 phpEnv),配合 php-build 插件编译带完整扩展的 PHP,并用 composer 安装 SDK。步骤如下:
立即学习“PHP免费学习笔记(深入)”;
- 先用
git clone https://gitcode.com/gh_mirrors/ph/phpenv ~/.phpenv安装phpenv - 再装插件:
git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build - 编译 PHP 时显式启用必要扩展:
export PHP_BUILD_CONFIGURE_OPTS="--with-openssl --with-curl --enable-json" - 执行
phpenv install 8.3.13,然后phpenv global 8.3.13 - 确认
php -m | grep -E "openssl|curl|json"全部输出,再运行curl -sS https://getcomposer.org/installer | php - 最后在项目中执行
php composer.phar require growthbook/growthbook
AB 测试配置必须绕开 phpEnv 的 Apache 代理层
GrowthBook 的实验分流依赖真实用户请求特征(如设备类型、地理位置、登录态),而 phpEnv 的 Apache 默认配置会抹掉 X-Forwarded-For、重写 User-Agent,甚至把所有请求归为 127.0.0.1。你在 index.php 里调用 $growthbook->isOn("new-checkout-flow"),永远只拿到默认分支。
正确做法是:
- 关闭 phpEnv 的 Apache,改用
php -S localhost:8000启动内置服务器(确保 GrowthBook 能读到原始$_SERVER) - 若必须用 Web 服务器,改用 Nginx + php-fpm,并在配置中透传头信息:
proxy_set_header X-Real-IP $remote_addr; - 在 GrowthBook 初始化时强制补全缺失字段:
->withAttributes(['ip' => $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1', 'userAgent' => $_SERVER['HTTP_USER_AGENT'] ?? ''])
真正的难点不在安装命令,而在运行时上下文是否完整——GrowthBook 不是「装上就能用」的库,它需要你亲手把用户请求的每一条线索都喂给它。phpEnv 那套封装好的图形界面,恰恰切断了这条链路。



















