0

0

Laravel Valet如何用于macOS开发_极简本地开发环境

尼克

尼克

发布时间:2025-09-27 19:25:01

|

254人浏览过

|

来源于php中文网

原创

laravel valet通过nginx、dnsmasq和php-fpm为macos提供轻量、高效的本地开发环境,无需虚拟机或docker,支持零配置多项目管理。使用homebrew和composer安装后,通过valet park可将整个目录下的项目自动映射为.test域名,valet link支持单个项目绑定,valet secure实现https,valet share生成公网url便于协作。相比mamp/xampp或docker,valet资源占用低、启动快、配置简单,且支持多php版本切换(valet use php@x.y)。常见问题如端口冲突(80/443被占用)可通过关闭apache或mamp解决;dns解析失败可重装valet或刷新缓存;php版本不生效需强制链接并重启valet;命令找不到需添加composer全局bin到path;404错误需检查项目结构是否正确指向public目录;https证书问题可重新secure或确认系统信任根证书。优化建议包括分类目录park以提升url可读性,使用valet isolate为特定项目独立php版本,编写自定义驱动扩展框架支持,结合tableplus等工具管理数据库,并利用valet share加速团队协作,同时与ide集成实现无缝调试,全面提升多项目开发效率。

laravel valet如何用于macos开发_极简本地开发环境

Laravel Valet在macOS上提供了一个极其轻量、高效的本地开发环境,它通过巧妙地结合Nginx、DnsMasq以及PHP-FPM,让开发者能够以零配置的方式,快速启动并管理多个PHP项目,无需臃肿的虚拟机或复杂的Docker容器,极大地提升了开发效率和本地机器的资源利用率。对我而言,它就像是macOS系统里一个隐形的、随时待命的私家服务器,简单到令人难以置信。

解决方案

要开始使用Laravel Valet,整个过程其实非常直接,我个人觉得它简直是macOS上本地开发环境的“傻瓜式”解决方案。

1. 准备工作:Homebrew与Composer 首先,你需要确保你的macOS上安装了Homebrew(包管理器)和Composer(PHP依赖管理工具)。如果还没有,通过终端运行以下命令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

然后安装Composer:

brew install composer

确保你的PHP环境也已经通过Homebrew安装并配置好,比如:

brew install php

如果你有多个PHP版本,Valet可以帮你切换,但先有一个是基础。

2. 安装Valet 接下来,通过Composer全局安装Laravel Valet:

composer global require laravel/valet

安装完成后,运行Valet的安装命令,它会配置Nginx和DnsMasq等核心服务:

valet install

这个命令会做几件事:它会安装并配置DnsMasq来处理所有.test域名的请求,将它们指向本地的127.0.0.1;同时,它会安装并启动Nginx,作为你的本地Web服务器。整个过程几乎是全自动的,你不需要手动去编辑任何Nginx配置文件。

3. 停靠(Park)你的项目目录 Valet最让我喜欢的一点就是它的“停靠”功能。你不需要为每个项目单独配置虚拟主机。 假设你所有的项目都放在~/Sites目录下,你只需要进入这个目录并运行:

cd ~/Sites
valet park

从现在开始,~/Sites目录下的任何子文件夹,比如~/Sites/my-laravel-app,都会自动通过my-laravel-app.test这个域名访问。你甚至不需要重启Valet,它会实时监控。

4. 链接(Link)特定项目(可选) 如果你不想将整个目录都停靠,或者你的项目不在任何停靠的目录中,你可以单独链接一个项目:

cd ~/my-other-project
valet link project-name

这样,你就可以通过project-name.test访问~/my-other-project了。

5. 为网站启用HTTPS 在本地开发时,HTTPS也变得越来越重要。Valet让这变得轻而易举:

valet secure project-name # 或针对停靠目录下的项目:valet secure my-laravel-app

Valet会使用mkcert工具为你生成并安装SSL证书,然后你的项目就可以通过https://project-name.test访问了。

就是这么简单,几行命令,你的macOS就拥有了一个强大而又极简的本地开发环境。

Valet与传统开发环境(如MAMP/XAMPP或Docker)相比,有哪些显著优势?

说实话,我个人觉得Valet的出现,简直是macOS本地开发环境的一股清流,尤其对于习惯了MAMP/XAMPP这类集成环境,或是刚开始接触Docker的开发者来说,它的优势非常明显,甚至可以说是颠覆性的。

tenghe企业网站管理系统(多风格+手机版)12.9
tenghe企业网站管理系统(多风格+手机版)12.9

tenghe网站管理系统基于ASP+ACCESS环境开发。tenghe企业网站管理系统(多风格+手机版)是由tenghe网络多年建站经验而开发,简单实用。利于优化,后台简洁明了,非常实用。 功能简介:本源码有多风格。蓝色,绿色,红色 ,黑色。 网站后台管理:地址:域名/admin/ 用户名:admin 登陆密码:admin 源码仅供学习,测试,研究之用

下载

对我来说,最突出的就是资源消耗极低。MAMP/XAMPP虽然方便,但它们往往会启动Apache或Nginx、MySQL、PHP等一整套服务,而且这些服务通常是独立的、占用资源相对较多的进程。更不用说Docker了,虽然容器化是未来的趋势,但为每个项目启动一个或多个Docker容器,尤其是在笔记本电脑上,内存和CPU的开销是实实在在的。Valet则不同,它只运行Nginx和PHP-FPM这两个核心服务,并且是原生运行在macOS上的,不涉及虚拟机,也不需要为每个项目创建独立的容器。这意味着我的MacBook Pro风扇不再狂转,电池续航也明显更好了,这在移动办公时简直是救命稻草。

其次是零配置的开发体验。MAMP/XAMPP需要你手动配置虚拟主机,编辑各种配置文件。Docker虽然有docker-compose.yml,但也需要你编写和维护。Valet的valet park命令一出,所有停靠目录下的项目就自动可用,域名都是.test后缀,非常直观。我再也不用去折腾hosts文件或者Nginx的conf文件了,这对我这种“懒人”开发者来说,简直是神器。

开发速度快也是一个不容忽视的优点。由于是原生运行,没有虚拟化层的开销,文件I/O和网络请求都非常快。页面加载速度几乎是瞬间完成,这在开发过程中,尤其是需要频繁刷新页面进行调试时,能节省大量时间,积累起来就是巨大的效率提升。

多PHP版本切换也变得异常简单。通过Homebrew安装多个PHP版本后,我只需要一个valet use php@7.4valet use php@8.2就能全局切换PHP版本,这对于同时维护多个不同PHP版本项目的开发者来说,简直是福音。MAMP/XAMPP通常只支持一个或少数几个PHP版本,切换起来也比较麻烦。

最后,不得不提的是valet share功能。通过Ngrok,Valet可以为你的本地项目生成一个公共URL,让其他人(比如客户或同事)可以访问你的本地开发环境。这在演示、调试移动端或协作时非常有用,避免了部署到测试服务器的麻烦,而且设置起来也非常迅速。

当然,Valet也有它的局限性,比如它不包含数据库服务,你需要单独安装(通常也是通过Homebrew安装MySQL或PostgreSQL)。但对我来说,这些小小的“不足”完全被它带来的巨大便利性所掩盖。

在使用Laravel Valet时,我可能会遇到哪些常见问题,以及如何解决?

即使Valet设计得再好,在使用过程中也难免会遇到一些小插曲。我个人在使用Valet时,也踩过一些坑,不过好在大多数问题都有相对简单的解决方案。

1. 端口冲突问题 这是最常见的问题之一。Valet默认使用80和443端口。如果你的macOS上已经运行了其他服务(比如macOS自带的Apache,或者你之前安装的MAMP/XAMPP),它们可能会占用这些端口,导致Valet无法正常启动或服务。

  • 解决方案: 首先,你需要停止占用端口的服务。对于macOS自带的Apache,可以在终端运行sudo apachectl stop。如果你使用了MAMP/XAMPP,确保它们的服务已经完全关闭。要查找哪些进程占用了端口,可以使用sudo lsof -i :80sudo lsof -i :443命令,然后根据PID(进程ID)使用kill -9 PID来终止它们。之后,尝试valet restartvalet install

2. .test域名无法解析 有时候,你会发现项目地址my-project.test无法访问,浏览器提示DNS解析错误。这通常是DnsMasq配置出了问题。

  • 解决方案: 检查/etc/resolver/test文件是否存在,并且内容是否正确(通常是nameserver 127.0.0.1)。如果文件不存在或内容有误,重新运行valet install通常能解决问题。偶尔,macOS的DNS缓存也会捣乱,可以尝试sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder来清除DNS缓存。

3. PHP版本切换问题 当你通过valet use php@X.Y切换PHP版本后,有时会发现项目仍然在使用旧的PHP版本,或者出现一些奇怪的错误。

  • 解决方案: 确保你通过Homebrew安装的PHP版本是正确的,并且已经正确链接。可以尝试brew link php@X.Y --force --overwrite来强制链接到你想要的版本。切换后,务必运行valet restart来重启Valet服务,让新的PHP-FPM进程生效。

4. valet命令找不到 这通常发生在刚安装Valet之后,终端提示command not found: valet

  • 解决方案: 这意味着Composer的全局bin目录没有添加到你的系统PATH环境变量中。通常,Composer的全局安装路径是~/.composer/vendor/bin。你需要将这个路径添加到你的shell配置文件(如~/.zshrc~/.bash_profile)中。例如,添加一行export PATH=$PATH:~/.composer/vendor/bin,然后保存文件并运行source ~/.zshrc(或source ~/.bash_profile)来重新加载配置。

5. 网站返回404错误 项目已经parklink了,但访问.test域名时却看到404页面。

  • 解决方案: 检查你的项目目录结构是否正确。对于Laravel项目,确保你的index.php位于public子目录下,并且你parklink的是项目根目录,而不是public目录。Valet会自动识别Laravel项目的public目录。你可以使用valet pathsvalet links命令来查看当前Valet正在服务的目录和链接。

6. HTTPS证书错误 当你运行valet secure后,浏览器仍然提示证书不安全。

  • 解决方案: Valet使用mkcert来生成本地信任的SSL证书。如果遇到问题,尝试先valet unsecure your-site-name,然后valet secure your-site-name重新生成。确保你的macOS系统已经信任了Valet安装的根证书。在Safari浏览器中,这通常会自动处理;在Chrome或Firefox中,可能需要手动检查或在钥匙串访问中确认证书是否被信任。

遇到问题时,我通常会先尝试valet restart,这能解决大部分临时性的问题。如果不行,再根据错误信息去排查,或者直接查阅Laravel Valet的官方文档,那里有很详尽的故障排除指南。

如何进一步优化Valet开发体验,实现更高效的多项目管理?

Valet本身已经非常高效了,但通过一些小技巧和习惯,我们还能让它在多项目管理方面表现得更出色,让开发流程更加丝滑。

1. 精心组织你的项目目录结构 我发现,与其一股脑地把所有项目都扔到一个~/Sites目录里,然后valet park,不如对目录进行更细致的划分。比如,我可以创建~/Sites/Laravel~/Sites/WordPress~/Sites/Static等子目录。然后,分别在这些子目录里运行valet park。 这样做的好处是,项目URL会更有组织性。例如,my-laravel-app.laravel.testmy-wordpress-blog.wordpress.test。这不仅让我在浏览器地址栏输入时更方便,也让整个项目结构一目了然,避免了不同类型项目混杂在一起的混乱感。

2. 掌握PHP版本切换的艺术 如果你像我一样,需要同时维护多个PHP版本的老项目和新项目,Valet的PHP版本切换功能是你的救星。通过valet use php@X.Y,你可以全局切换Valet使用的PHP版本。但如果某个项目需要特定的PHP版本,而你不想全局切换,可以考虑使用valet isolate php@X.Y命令。这个命令可以在特定项目目录下创建一个独立的PHP-FPM服务,只为这个项目提供指定版本的PHP,而不会影响其他项目。这对于处理遗留系统来说,简直是太方便了。

3. 利用自定义驱动(Custom Drivers)扩展Valet能力 Valet原生支持Laravel、WordPress、Statamic等流行框架。但如果你在使用一些小众框架或自定义PHP应用,Valet可能无法直接识别。这时,你可以编写自定义驱动。自定义驱动其实就是一个简单的PHP文件,告诉Valet如何为你的应用提供服务。它能让你在Valet环境中运行几乎任何基于PHP的应用,极大地扩展了Valet的适用范围。虽然这需要一点点PHP知识,但一旦掌握,你就能让Valet适应你的任何需求。

4. 数据库管理与Valet分离 Valet专注于Web服务器和PHP环境,它不包含数据库服务。我个人觉得这是个优点,因为它让数据库层保持了高度的灵活性。我通常会通过Homebrew安装MySQL或PostgreSQL(brew install mysql),然后使用专业的数据库管理工具,比如TablePlus、Sequel Ace或DataGrip。这些工具提供了强大的图形界面,让数据库的创建、管理和查询变得非常高效,而且它们与Valet是完全独立的,互不干扰。

5. 结合valet share进行快速协作与测试valet share是一个被低估的功能。当你需要向客户展示一个开发中的功能,或者在真实的移动设备上测试响应式布局时,valet share能快速生成一个可公开访问的URL。这比部署到测试服务器要快得多,而且可以直接暴露你本地的开发环境,非常适合快速迭代和反馈。我经常用它来给前端同事提供一个实时的后端接口,或者让产品经理直接在他们的设备上体验新功能。

6. 与你的IDE深度集成 无论是PhpStorm、VS Code还是其他IDE,都可以很好地与Valet协同工作。将IDE的调试器(如Xdebug)配置为监听Valet提供的本地端口,你可以直接在浏览器访问my-project.test,然后IDE就会捕获到调试会话。这种无缝的调试体验,能让你在遇到问题时,快速定位并解决,而无需复杂的配置。

通过这些优化,Valet不仅是一个极简的本地开发环境,更是一个强大、灵活且高度可定制的开发工作站,真正实现了高效的多项目管理。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

340

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

293

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

772

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

385

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

141

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

85

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

80

2025.08.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

458

2026.03.04

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 13.2万人学习

Rust 教程
Rust 教程

共28课时 | 6.8万人学习

Vue 教程
Vue 教程

共42课时 | 9.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号