laravel 5.4 在 macos 上安装必须使用 php 5.6.4–7.1(含),因 mcrypt 扩展在 php 7.2+ 中已被移除,且系统自带 php 不含该扩展;需用 brew install php@7.1 并确保 mcrypt、mbstring、openssl、pdo、tokenizer、xml 全部启用,配合 composer 1.x 执行 composer create-project --prefer-dist laravel/laravel blog "5.4.*" 完成安装。

Laravel 5.4 在 macOS 上能装,但必须用 PHP 5.6.4–7.1(含),且不能跳过 Mcrypt 扩展 —— 这是它和新版 Laravel 最关键的兼容断点。
确认 PHP 版本和必需扩展
Laravel 5.4 明确要求 mcrypt、mbstring、openssl、pdo、tokenizer、xml 全部启用。macOS 自带的 PHP(如 8.0+)默认不带 mcrypt,且该扩展在 PHP 7.2+ 中已被移除,所以不能直接用系统 PHP。
- 运行
php -v确认当前版本;若 ≥7.2,必须切换到 PHP 7.1 或更低版本(推荐用brew install php@7.1) - 检查扩展:运行
php -m | grep -E 'mcrypt|mbstring|openssl|pdo|tokenizer|xml',缺哪个就补哪个 - 若提示
mcrypt.so not found,不要尝试手动编译 —— macOS 10.14+ 和 Apple Silicon(M1/M2/M3)上极大概率失败;改用brew install php@7.1后,它的mcrypt是内置启用的
安装 Composer 并设为全局命令
Composer 是唯一靠谱的安装入口,Laravel 官方安装器(laravel/installer)在 5.4 时代虽可用,但容易因 PHP 版本错配导致 key:generate 失败或 .env 写入异常。
- 下载安装脚本:
curl -sS https://getcomposer.org/installer | php - 移动为全局命令:
sudo mv composer.phar /usr/local/bin/composer - 验证:
composer --version应输出类似Composer version 1.10.22(注意:Laravel 5.4 不兼容 Composer 2.x,必须用 Composer 1.x) - 若已装了 Composer 2.x,降级命令是:
composer self-update --1
创建 Laravel 5.4 项目(指定版本 + 避开依赖冲突)
直接跑 composer create-project laravel/laravel 默认拉最新版(≥6.x),必须显式锁死版本范围,且推荐加 --prefer-dist 加速并减少 dev 依赖干扰。
- 执行:
composer create-project --prefer-dist laravel/laravel blog "5.4.*" - 若报错
Root composer.json requires php ^5.6.4|^7.0|^7.1,说明当前 PHP 版本不匹配,立刻切到 PHP 7.1 - 若卡在
guzzlehttp/guzzle或symfony/http-foundation,加--no-scripts跳过自动执行,后续再进目录手动跑php artisan key:generate - 生成密钥前先确保
.env存在且可写;否则php artisan key:generate会静默失败
启动服务前必须处理的两个硬性问题
哪怕 php artisan serve 能跑起来,路由 404 或白屏大概率不是代码问题,而是环境配置没到位。
-
storage/和bootstrap/cache/目录必须可写:chmod -R 775 storage bootstrap/cache(Apache/Nginx 用户还需确认 Web 进程用户有权限,比如_www或www-data) - Mac 自带 Apache 用户常忽略
mod_rewrite:打开/etc/apache2/httpd.conf,取消注释LoadModule rewrite_module libexec/apache2/mod_rewrite.so;再进/etc/apache2/extra/httpd-vhosts.conf,确保对应<directory></directory>块里有AllowOverride All - 别依赖
php artisan serve做生产验证 —— 它用的是 PHP 内置服务器,不解析.htaccess,所有重写规则(如去除index.php)都无效;真要测路由,必须配好 Apache 或 Nginx
Mcrypt 是 Laravel 5.4 的“生死线”,不是可选项;PHP 版本、Composer 版本、扩展启用状态,三者必须严格对齐,漏一个都会卡在 Class 'Mcrypt' not found 或 TokenMismatchException。现在 macOS 新机器默认没有这些,得手动搭一层兼容环境,而不是期待一键跑通。











