You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacBook上Laravel使用php artisan serve无法连接数据库(MAMP环境)

Laravel数据库连接异常:php artisan serve失败但Apache访问正常

核心原因

Apache使用的是MAMP集成的PHP环境,而php artisan serve默认调用MacOS系统自带的PHP,两个环境的MySQL扩展配置(如Socket路径、驱动版本)不一致,导致连接失败。

解决方案

1. 强制artisan serve使用MAMP的PHP版本

找到MAMP的PHP安装路径(通常在/Applications/MAMP/bin/php/下,选择你当前使用的版本,比如php8.2.0),用该路径执行artisan命令:

/Applications/MAMP/bin/php/php8.2.0/bin/php artisan serve

如果嫌路径太长,可以在终端配置别名:

  • 编辑~/.zshrc(Zsh环境)或~/.bashrc(Bash环境),添加:
alias mamp-php='/Applications/MAMP/bin/php/php8.2.0/bin/php'
  • 执行source ~/.zshrc或source ~/.bashrc使配置生效,之后直接用:
mamp-php artisan serve

2. 指定MySQL Socket路径

MAMP的MySQL Socket路径通常为/Applications/MAMP/tmp/mysql/mysql.sock,在.env中添加该配置:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=my_db
DB_USERNAME=root
DB_PASSWORD=root
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

同时确保database.php的mysql配置中包含socket项:

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''), // 确保这一行存在
    ...
]

添加后执行缓存清理:

php artisan config:clear

3. 验证两个PHP环境的配置差异

分别查看系统PHP和MAMP PHP的MySQL配置,对比差异:

  • 系统PHP:
php -i | grep -A 20 "mysql"
  • MAMP PHP:
/Applications/MAMP/bin/php/php8.2.0/bin/php -i | grep -A 20 "mysql"

重点检查mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket这几个配置项,确保artisan serve使用的PHP环境指向正确的Socket路径。

4. 确认MAMP MySQL服务状态

打开MAMP应用,确保MySQL服务处于启动状态,且端口为3306(和配置一致)。

内容的提问来源于stack exchange,提问作者Aamish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 20:15:16