laravel 5.4 本身不依赖特殊环境变量,但必须将 ~/.composer/vendor/bin 加入 path(如配置 ~/.zshrc 或 ~/.bash_profile),否则 laravel new 等命令会报 command not found;app_env 等运行时变量应通过 .env 文件或 web 服务器配置设定,而非 shell 配置文件。

直接说结论:Laravel 5.4 本身不依赖特殊环境变量,但你必须让 laravel 命令和 composer 全局二进制可执行,否则创建项目会报 command not found。
为什么需要配 ~/.bash_profile(或 ~/.zshrc)
Mac 默认 Shell 在 Catalina 及之后是 zsh,但很多老教程仍用 bash;Laravel Installer 和 Composer 全局安装的命令(如 laravel)默认装在 ~/.composer/vendor/bin/,这个路径不在系统 $PATH 里,终端自然找不到。
常见错误现象:laravel: command not found 或 composer: command not found(即使已运行过 composer global require "laravel/installer")。
- 确认当前 Shell:运行
echo $SHELL,输出/bin/zsh就该改~/.zshrc;输出/bin/bash才改~/.bash_profile - 检查是否已安装 Laravel Installer:
composer global list | grep laravel/installer - 确认二进制实际位置:
ls -la ~/.composer/vendor/bin/,里面应有laravel符号链接 - 添加路径(以 zsh 为例):
echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.zshrc - 生效配置:
source ~/.zshrc(或source ~/.bash_profile)
APP_ENV 和其他 Laravel 运行时环境变量怎么设
Laravel 5.4 启动时读取 APP_ENV 来决定加载哪个 .env.{env} 文件(比如 .env.production),但它不靠 Shell 环境变量传递——而是靠 Web 服务器或 PHP CLI 启动时注入。
开发阶段最简单的方式是直接写进 .env 文件:APP_ENV=local;生产部署才需要在服务器层面设置。
- Apache 下:在虚拟主机配置中加
SetEnv APP_ENV production - Nginx 下:在
fastcgi_param块里加fastcgi_param APP_ENV production; - CLI 运行时临时指定:
APP_ENV=staging php artisan config:cache - 不要在
~/.bash_profile里 exportAPP_ENV—— 这会导致所有终端命令都带上该值,可能干扰本地调试
php artisan serve 起不来?检查 PHP 和 PATH 冲突
Laravel 5.4 要求 PHP ≥ 5.6.4,但 macOS 自带的 PHP(/usr/bin/php)版本太低,且常被 Homebrew 安装的 PHP(如 /opt/homebrew/bin/php)覆盖失败。
典型表现:php artisan serve 报错 Class 'PDO' not found 或直接退出无响应。
- 查当前 PHP 路径:
which php,确保它指向 Homebrew 安装的版本(不是/usr/bin/php) - 如果
which php是系统路径,把 Homebrew 的 bin 加到PATH最前面:export PATH="/opt/homebrew/bin:$PATH"(M1/M2 Mac)或export PATH="/usr/local/bin:$PATH"(Intel Mac) - 验证扩展是否启用:
php -m | grep -E "(pdo|mbstring|tokenizer|xml)",缺哪个就 brew reinstall 对应模块 - 别用
sudo运行php artisan serve—— 权限错乱会导致storage/目录写入失败
真正容易被忽略的是:Laravel 5.4 的 artisan 命令本身不读 ~/.bash_profile 里的变量,它只认 Web 服务器传入的环境变量或 .env 文件。所以 PATH 配置只影响「你能不能敲出命令」,不影响「命令运行时的行为」——后者得靠 .env 或服务器配置兜底。











