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 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 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年前 评论
李小明 2年前
blue250 (作者) (楼主) 2年前

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