composer config -g 设置的是 Composer 全局配置(如镜像源、仓库等),写入 ~/.composer/config.json,与系统环境变量或 PHP 的 $_ENV 无关;真正影响环境变量的是 shell 的 export(Linux/macOS)或 set(Windows)。

composer config -g 设置的是全局配置,不是环境变量
很多人误以为 composer config -g 能设置 PHP 运行时的 $_ENV 或系统级环境变量,其实它只修改 Composer 自己的全局配置文件(通常是 ~/.composer/config.json),和操作系统或 PHP 的环境变量完全无关。真正影响 getenv()、$_SERVER 的是 shell 层面的 export(Linux/macOS)或系统属性(Windows),不是 Composer 命令。
想让项目自动加载 .env,别碰 composer config -g
如果你的目标是“不同环境用不同配置”,比如开发用 .env.local、生产用 .env.prod,正确路径是靠 phpdotenv + Composer 脚本事件,而不是改 Composer 全局配置:
-
composer require vlucas/phpdotenv安装依赖 - 在
composer.json的"scripts"中加入:"scripts": { "post-autoload-dump": "Dotenv\Dotenv::createUnsafeImmutable(__DIR__)->load()" } - 确保
.env文件存在且权限合理(不提交到 Git) - 注意:不要用
createImmutable()在 CLI 环境下——它会拒绝覆盖已存在的环境变量,导致APP_ENV等被 shell 设置的值失效
APP_ENV 这类变量必须由系统或启动命令注入
像 Laravel、Symfony 这类框架读取的 APP_ENV、APP_DEBUG,根本不在 Composer 控制范围内。它们生效的前提是:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- Linux/macOS 下运行前执行:
APP_ENV=production composer install - 或者在部署脚本中
export APP_ENV=production再执行后续命令 - Windows CMD 中:
set APP_ENV=production && composer install - CI/CD 中(如 GitHub Actions)需在
env:块里显式声明
漏掉这一步,哪怕 .env 里写了 APP_ENV=production,框架也可能 fallback 到默认值(通常是 dev)。
composer global require 的 bin 目录和 PATH 才是真·全局变量相关项
唯一和“全局变量名”沾边的 Composer 行为,是把第三方命令行工具(如 laravel/installer)安装到全局 bin 目录,并确保该目录在系统 PATH 中:
- 执行
composer global require laravel/installer - Composer 默认把可执行文件放
~/.composer/vendor/bin/(Linux/macOS)或%USERPROFILE%AppDataRoamingComposerendorin(Windows) - 你必须手动把该路径加进系统
PATH,否则运行laravel会报command not found - 验证方式:
echo $PATH(macOS/Linux)或echo %PATH%(Windows)中要能看到对应路径
这个环节最容易被跳过,尤其是 Windows 用户没重启终端或没刷新环境变量,就以为安装失败。

















