laravel 4.2 在 mac 上用 mamp 可行但需严格匹配:必须使用 mamp 4.5 或 5.7(含 php 5.6.40),显式调用其 php 路径执行 composer create-project,启用 mcrypt 等扩展,并手动配置 apache 虚拟主机指向 public 目录。

直接说结论:Laravel 4.2 在 Mac 上用 MAMP 是可行的,但必须手动降级 PHP 版本并禁用部分扩展,否则 composer create-project 会失败或运行时报错。
确认 MAMP 的 PHP 版本是否兼容 Laravel 4.2
Laravel 4.2 官方要求 PHP ≥ 5.4.0 且 ≤ 5.6.x(不支持 PHP 7+)。MAMP 默认最新版已弃用 PHP 5.6,免费版从 MAMP 6.0 起只提供 PHP 7.4 及以上版本。所以你必须:
- 下载并安装 MAMP 4.5 或 MAMP 5.7(这两个版本仍内置 PHP 5.6.40);
- 安装后打开 MAMP → Preferences → PHP → 选择
PHP 5.6.40; - 终端执行
/Applications/MAMP/bin/php/php5.6.40/bin/php -v验证路径和版本; - 检查关键扩展是否启用:
/Applications/MAMP/bin/php/php5.6.40/bin/php -m | grep -E 'openssl|mbstring|mcrypt|pdo|tokenizer'—— 注意:PHP 5.6 下mcrypt是必需的,但 macOS 10.14+ 和新版 MAMP 默认不带,若缺失需手动编译或换用 Homebrew PHP 5.6(不推荐,太折腾)。
用 MAMP 的 PHP 运行 Composer 和 Laravel 安装命令
不能直接用系统默认 php 或 composer,必须显式指定 MAMP 的 PHP 路径:
- 先确保 Composer 已安装(可用
curl -sS https://getcomposer.org/installer | /Applications/MAMP/bin/php/php5.6.40/bin/php); - 创建项目时用完整路径调用:
/Applications/MAMP/bin/php/php5.6.40/bin/php /usr/local/bin/composer create-project laravel/laravel=4.2.* myapp --no-dev; - 切勿运行
composer global require laravel/installer,因为全局 bin 目录会绑定系统 PHP,导致后续laravel new失败; - 生成的
myapp项目需放在/Applications/MAMP/htdocs/下,否则 Apache 无法访问。
配置 Apache 虚拟主机指向 Laravel 4.2 的 public 目录
MAMP 免费版不支持图形化虚拟主机,必须手动改配置:
- 编辑
/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf,追加:
<virtualhost>
DocumentRoot "/Applications/MAMP/htdocs/myapp/public"
ServerName laravel42.local
<directory>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</directory></virtualhost>
- 在
/private/etc/hosts中添加:127.0.0.1 laravel42.local; - 重启 MAMP 的 Apache;
- 浏览器访问
http://laravel42.local:8888—— 若提示Mcrypt PHP extension required,说明mcrypt没加载,此时需检查/Applications/MAMP/conf/php/php5.6.40/php.ini中是否取消了;extension=mcrypt.so的注释,并确认该文件真实存在(MAMP 5.7 的mcrypt.so通常位于/Applications/MAMP/bin/php/php5.6.40/lib/php/extensions/no-debug-non-zts-20131226/)。
常见报错与绕过方式
Laravel 4.2 + MAMP 组合下最常卡在三处:
-
Class 'Mcrypt' not found:不是扩展没启,而是 Laravel 4.2 的Encrypter类硬依赖Mcrypt扩展名(PHP 7.2+ 已移除),PHP 5.6 下必须确保mcrypt.so存在且extension=mcrypt.so在 php.ini 中生效; -
ReflectionException: Class App\Http\Controllers\Controller does not exist:这是 Laravel 5+ 的命名空间写法混入了 4.2 项目,说明你误用了 Laravel 5+ 的模板或文档,Laravel 4.2 的控制器在app/controllers/下,基类是BaseController; - 页面空白但无错误:检查
storage/和bootstrap/compiled.php权限,MAMP 的 Apache 用户是_www,需运行sudo chgrp -R _www /Applications/MAMP/htdocs/myapp/storage并设为775。
真正麻烦的不是安装,而是 PHP 5.6 的 mcrypt 依赖和 MAMP 版本锁定——一旦选错 MAMP 版本,重装比调试快得多。











