MAMP 中的 Mysql 和 redis 都是 unix socket 时的配置方法

使用了一圈,感觉开发环境最方便的,还是用 MAMP RPO。毕竟都是原生的,用 homestead,sail 这类环境,多多少少有点不适应。

但默认的MAMP 为了安全,都是使用本地套接字连接 ( Unix socket )。

/Applications/MAMP/tmp/mysql/mysql.sock
/Applications/MAMP/tmp/redis.sock

按常规配置都不能连接上数据库和 redis 。查了一圈资料基本也找不到答案,没法子。读源代码,试出了答案。

对于 mysql 需要在 connection 里增加 unix_socket 项目。修改 /config/database.php

'connections' => [
    'mysql' => [
        ...
        'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
        ]
    ]

对于 redis 要在 connection 里加 scheme 项目和 path 项目

'redis' => [
    'default' => [
        ...
        'scheme'=>'unix',
        'path' => '/Applications/MAMP/tmp/redis.sock',
    ]
]

经过这个配置后,就可以直接通过套接字连上了。当然,生产环境这样用,也会更安全。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3

进入了 laravel9 以后,如果 REDIS_CLIENT= phpredis 。那么配置方法,就更特殊了,又是一阵好找。

这次,直接在 .env 里加配置

CACHE_DRIVER=redis
REDIS_HOST=/Applications/MAMP/tmp/redis.sock
REDIS_PORT=-1

注意 port 是 -1 。

数据库只需要在 .env 里增加配置
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

2年前 评论
李小明 1年前
blueidea (作者) (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!