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 控制范围内。它们生效的前提是:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 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 用户没重启终端或没刷新环境变量,就以为安装失败。










