ycodetech / valet-windows
为Windows提供更愉悦的本地开发体验。Laravel Valet的Windows版本,也是cretueusebiu/valet-windows的分支,新增了许多功能。
Requires
- php: ^7.4|^8.0|^8.2
- composer/ca-bundle: ^1.3
- guzzlehttp/guzzle: ^7.7
- illuminate/collections: ^8.0|^9.0|^10.0|^11.0
- illuminate/container: ^8.0|^9.0|^10.0|^11.0
- mnapoli/silly: ^1.8
- phpseclib/phpseclib: ^3.0
- symfony/process: ^4.0|^5.0|^6.0|^7.0
Conflicts
README
这是流行的Mac开发环境Laravel Valet的Windows版本。
Laravel Valet Windows 3是对cretueusebiu/valet-windows的重要更新分支,增加了许多改进和新命令。这个版本希望尽可能与Mac版本保持一致。有关命令兼容性,请参阅兼容性检查器。
composer global require ycodetech/valet-windows
警告 如果你来自cretueusebiu/valet-windows,那么在安装此3.0版本之前,请确保从您的计算机中完全卸载它,删除所有配置文件,并使用
composer global remove cretueusebiu/valet-windows
从composer中移除。
介绍 | 安装 | 命令 | 命令兼容性检查器 | 弃用和移除 | 已知问题 | Xdebug安装 | 贡献
介绍
Valet是Laravel的Windows开发环境。无需Vagrant,无需/etc/hosts
文件。您甚至可以使用本地隧道公开共享您的站点。是的,我们也喜欢。
Laravel Valet配置您的Windows,在机器启动时始终在后台运行Nginx。然后,使用Acrylic DNS,Valet将所有对*.test
域名(即tld)的请求代理到您本地机器上安装的站点。
这是Valet Windows的3.0版本,以Laravel Valet Windows 3的名义发布,是对cretueusebiu/valet-windows的重要更新分支。它引入了许多改进、新命令,并希望尽可能与原始Mac版本保持一致。
安装
在安装之前,请确保没有其他程序(如Apache或Nginx)正在绑定到您本地机器的80端口。如果安装了XAMPP或类似程序,请确保它们没有安装Windows服务,并更改其端口。
同时请确保以管理员身份打开您首选的终端(Windows Terminal、CMD、Git Bash、PowerShell等)。您可以使用VS Code集成终端,但如果VS Code没有以管理员身份打开,那么将出现一系列用户账户控制(UAC)弹出窗口,以允许访问Valet。您也可以使用没有弹出窗口的非管理员终端,您只需在所有其他Valet命令之前使用Valet的sudo
命令即可。
注意:Laravel Valet Windows 3开发和测试以在Windows 10上运行。理论上它应该在Windows 11及其以上版本上运行,但无法保证。欢迎测试人员和贡献者。
-
如果您未安装PHP,请确保安装它。
下载Zip文件并将其解压到您选择的目录。推荐目录为:
C:/php/
。您可以使用线程安全(TS),但对于使用FastCGI协议的PHP,非线程安全(NTS)更好,因为Valet就是这样使用的。
对于NTS二进制文件,常见的用例是通过FastCGI协议与Web服务器交互,不使用多线程(但也例如CLI)。
-
如果您未安装Composer,请确保安装它。
-
使用Composer通过
composer global require ycodetech/valet-windows
安装Valet。警告 如果你来自cretueusebiu/valet-windows,那么在安装此3.0版本之前,请确保从您的计算机中完全卸载它,删除所有配置文件,并使用
composer global remove cretueusebiu/valet-windows
从composer中移除。 -
运行
valet install
命令安装Valet,或者使用管理员提升权限运行valet sudo install
。这将配置和安装Valet,并将Valet的守护进程注册为在系统启动时启动。安装完成后,Valet将自动启动其服务。 -
如果您在Windows 10/11上安装,可能需要手动配置Windows以使用Acrylic DNS代理。
每次您的机器启动时,Valet都会自动启动其守护进程。一旦完成初始的Valet安装,就无需再运行valet start
或valet install
。
命令
对于称为“与Mac版本相同”的命令,请参阅Laravel网站上的官方文档以获取更多信息。
安装/卸载 & 启动/停止
install
install Install Valet's services and configs
Install Valet's services and configs, and auto start Valet.
[--xdebug] Optionally, install Xdebug for PHP.
$ valet install $ valet install --xdebug Valet installed and started successfully!
此命令安装所有Valet服务
- Nginx
- PHP CGI
- PHP Xdebug CGI [可选]
- Acrylic DNS
- Ansicon
以及其在C:\Users\Username\.config\valet
中的配置。
完成后,Valet将自动启动服务。
注意:如果再次运行已安装的install
,Valet将询问您是否要继续重新安装。
install --xdebug
--xdebug
是一个布尔选项,用于可选安装PHP的Xdebug。如果存在此选项,则为true
,否则为false
。
sudo
sudo [valetCommand] A sudo-like command to use Valet commands with elevated privileges.
[-o|--valetOptions] Specify Valet command options/flags.
$ valet sudo install
sudo
是Windows中与同名Mac命令实用程序相当的Windows等效项,由gsudo提供。此命令允许您将Valet命令传递给gsudo,然后gsudo将命令提升到最高系统管理员权限,无需多个用户账户控制(UAC)弹出...
gsudo只需要1个UAC弹出以启用提升(每次使用),然后传递的Valet命令、其参数、值和选项将以系统身份执行,无需进一步UAC。
valetCommand
valetCommand
是Valet命令,以及您要运行的参数值。它是一个用空格分隔的字符串数组。
$ valet sudo isolate 7.4
在上面的示例中,isolate
是命令名称,7.4
是参数值。
指定Valet命令时,您可以在命令之前传递与正常情况下相同的valet
CLI关键字,但这不是必需的。如果省略,Valet将自动添加。建议省略关键字,因为它更简洁。
$ valet sudo valet isolate 7.4
--valetOptions
--valetOptions
(快捷键-o
)[可选]是Valet命令的Valet选项/标志。它是一个字符串,但可以指定多个选项。请参阅有关此选项的重要说明。
$ valet sudo link mysitename -valetOptions=isolate//secure $ valet sudo link mysitename -o isolate//secure
start
start Starts Valet's services
[service] Optionally, specify a particular service to start [acrylic, nginx, php, xdebug]
$ valet start Valet services have been started. $ valet start nginx Nginx has been started.
重启
restart Restarts Valet's services
[service] Optionally, specify a particular service to restart [acrylic, nginx, php, xdebug]
$ valet restart Valet services have been restarted. $ valet restart nginx Nginx has been restarted.
停止
stop Stops Valet's services
[service] Optionally, specify a particular service to stop [acrylic, nginx, php, xdebug]
$ valet stop Valet services have been stopped. $ valet start nginx Nginx has been stopped.
卸载
uninstall Uninstalls Valet's services
[--force] Optionally force uninstallation without a confirmation question
[-p|--purge-config] Optionally purge and remove all Valet configs
$ valet uninstall Are you sure you want to proceed? yes/no $ yes Valet has been removed from your system.
这将完全停止并卸载Valet的所有服务。
如果您想通过Composer更新Valet(composer global update ycodetech/valet-windows
),则需要卸载Valet,以确保Composer可以无错误地删除和更新相关文件。
--force
--force
是可选的,用于在不询问确认的情况下强制卸载。
$ valet uninstall --force Valet has been removed from your system.
--purge-config
--purge-config
(快捷键-p
)是可选的,用于清除并删除Valet的所有配置。如果Valet不再需要并且不会被再次安装,应使用此选项。
$ valet uninstall --purge-config $ valet uninstall -p Are you sure you want to proceed? yes/no $ yes Valet has been uninstalled from your system, and purged all configs.
PHP服务
php:add
php:add [path] Add PHP by specifying a path
[--xdebug] Optionally, install Xdebug
$ valet php:add "C:\php\7.4" PHP 7.4.33 from C:\php\7.4 has been added.
注意:添加PHP时,将提取完整的版本号(例如,7.4.33)并生成一个别名(例如,7.4)。这两个都可以在其他命令中使用。
此外,版本详情将以自然降序顺序写入配置中,并遵循小数点。这意味着当添加两个别名(8.1)的次要版本(如8.1.8和8.1.18)时,然后默认设置PHP使用该别名,那么Valet将使用该别名的最新版本,在这种情况下将是8.1.18。
注意:您可以使用不带引号的路径,但如果目录中有空格,例如C:/Program Files/php/7.4
,则必须用引号括起来。否则valet将遇到错误。
php:add --xdebug
--xdebug
是一个布尔选项,用于可选地安装要添加的PHP的Xdebug。如果存在此选项,则为true
,否则为false
。
$ valet php:add "C:\php\7.4" --xdebug Installing Xdebug for 7.4.33... PHP 7.4.33 from C:\php\7.4 has been added.
php:remove
php:remove [phpVersion] Remove PHP by specifying it's version
[--path=] Optionally specify by path
完整版本和别名版本都适用
$ valet php:remove 7.4.33 $ valet php:remove 7.4 PHP 7.4.33 from c:\php\7.4 has been removed.
--path
您可以使用路径而不是版本号来指定PHP。
$ valet php:remove --path="C:\php\7.4" PHP 7.4.33 from c:\php\7.4 has been removed.
注意:如果为正在删除的PHP版本安装了Xdebug,那么Valet也将删除该版本的Xdebug。
php:install
php:install Reinstall all PHP services from [valet php:list]
$ valet php:install Reinstalling PHP services...
php:install
使用php:list
列出Valet中的版本安装PHP CGI服务。如果它们已经安装,Valet首先卸载它们,然后重新安装。
php:uninstall
php:uninstall Uninstall all PHP services from [valet php:list]
$ valet php:uninstall Uninstalling PHP services...
php:uninstall
卸载php:list
中列出的PHP CGI服务。
php:list
php:list List all PHP versions and services
列出Valet中安装的PHP版本。
$ valet php:list Listing PHP services... ┌─────────┬───────────────┬────────────┬──────┬─────────────┬─────────┐ | Version | Version Alias | Path | Port | xDebug Port | Default | ├─────────┼───────────────┼────────────┼──────┼─────────────┼─────────┤ | 8.1.8 | 8.1 | C:\php\8.1 | 9006 | 9106 | X | ├─────────┼───────────────┼────────────┼──────┼─────────────┼─────────┤ | 7.4.33 | 7.4 | C:\php\7.4 | 9004 | 9104 | | └─────────┴───────────────┴────────────┴──────┴─────────────┴─────────┘
php:which
php:which Determine which PHP version the current working directory is using
[site] Optionally, specify a site
$ valet php:which The current working directory site1 is using PHP 7.4.33 (isolated) $ valet php:which site2 The specified site site2 is using PHP 8.1.8 (default)
xdebug:install
xdebug:install Install Xdebug services for all PHP versions from [valet php:list]
[phpVersion] Optionally, specify one particular PHP version of Xdebug to install
xdebug:install
为php:list
中列出的所有PHP版本安装Xdebug服务。
$ valet xdebug:install Installing Xdebug services... Installed Xdebug for PHP 7.4.33, 8.1.8
Valet只在单独的端口上安装Xdebug PHP CGI服务,以与PHP CGI服务一起工作,它不会安装Xdebug本身。请阅读Xdebug安装以获取更多信息。
您可以使用phpVersion
参数为特定的PHP版本可选地安装Xdebug。
$ valet xdebug:install 7.4 Installing Xdebug services... Installed Xdebug for PHP 7.4.33
注意:如果已安装所提供的PHP版本的Xdebug,Valet将询问您是否要重新安装。
xdebug:uninstall
xdebug:uninstall Uninstall all Xdebug services
[phpVersion] Optionally, specify one particular PHP version of Xdebug to uninstall
$ valet xdebug:uninstall Xdebug services uninstalled.
您可以使用phpVersion
参数为特定的PHP版本可选地卸载Xdebug。
$ valet xdebug:uninstall 7.4 Installing Xdebug services... Installed Xdebug for PHP 7.4.33
使用PHP版本
use
use [phpVersion] Change the default PHP version used by Valet. Either specify the full version or the alias
$ valet use 8.1 Setting the default PHP version to [8.1]. Valet is now using 8.1.18. $ valet use 8.1.8 Setting the default PHP version to [8.1.8]. Valet is now using 8.1.8.
注意:如果使用别名,并且有多个8.1版本可用,例如8.1.8和8.1.18,则将使用最新版本,即8.1.18。
isolate
isolate [phpVersion] Isolates the current working directory to a specific PHP version
[--site=] Optionally specify the site instead of the current working directory
注意:您一次可以隔离1个或多个站点。只需将--site
选项传递给每个您希望将其与同一PHP版本隔离的站点即可。
$ cd /d/sites/my_site $ valet isolate 7.4 Isolating the current working directory... The site [my_site] is now using 7.4. $ valet isolate 7.4 --site=another_site The site [another_site] is now using 7.4. $ valet isolate 7.4 --site=site1 --site=site2 --site=site3 The site [site1] is now using 7.4. The site [site2] is now using 7.4. The site [site3] is now using 7.4.
isolated
isolated List all isolated sites
$ valet isolated ┌──────────┬────────┐ | Site | PHP | ├──────────┼────────┤ | site1 | 7.4.33 | ├──────────┼────────| | my_site | 7.4.33 | └──────────┴────────┘
unisolate
unisolate Removes [unisolates] the current working directory
[--site=] Optionally specify the site instead of the current working directory
[--all] Optionally removes all isolated sites
$ cd /d/sites/my_site $ valet unisolate Unisolating the current working directory... The site [my_site] is now using the default PHP version. $ valet unisolate --site=my_site The site [my_site] is now using the default PHP version.
unisolate --all
--all
是一个布尔选项,用于可选地取消隔离所有当前已隔离的站点。如果存在此选项,则为true
,否则为false
。
$ valet unisolate --all The site [my_site] is now using the default PHP version. The site [site1] is now using the default PHP version.
secure
secure Secure the current working directory with a trusted TLS certificate
[site] Optionally specify the site instead of the current working directory
使用受信任的自签名TLS证书保护网站,并通过https
协议提供网站。
$ cd /d/sites/site1 $ valet secure The [site1.test] site has been secured with a fresh TLS certificate and will now be served over HTTPS. $ valet secure site1 The [site1.test] site has been secured with a fresh TLS certificate and will now be served over HTTPS.
注意:安全命令(或任何其他命令中的安全选项)需要在管理员权限/提升终端中使用。要么以管理员身份打开终端,要么使用sudo
命令。
已加密
secured List all secured sites
$ valet secured ┌──────────────┐ | Site | ├──────────────┤ | site1.test | ├──────────────┤ | my_site.test | └──────────────┘
未加密
unsecure Unsecure the current working directory
[site] Optionally specify the site instead of the current working directory
[--all] Optionally unsecure all secured sites
通过删除其TLS证书来解密站点,并使用http
协议提供站点。
$ cd /d/sites/site1 $ valet unsecure The [site1.test] site has been unsecured and will now be served over HTTP. $ valet secure site1 The [site1.test] site has been unsecured and will now be served over HTTP.
unsecure --all
--all
是一个布尔选项,可选地解密所有当前加密的站点。如果存在此选项,则它是true
,否则是false
。
$ valet unsecure --all Unsecured all sites.
停放、链接、代理和站点
park
park Registers the current working directory to automatically serve sub-directories as sites
[path] Optionally, specify a path
$ cd /d/sites $ valet park This directory has been registered to Valet and all sub-directories will be accessible as sites. $ valet park d/sites The [d/sites] directory has been registered to Valet and all sub-directories will be accessible as sites.
park
将包含所有站点的目录注册到Valet。一旦目录已被parked
,Valet将自动将所有子目录作为站点提供,可在网络浏览器中访问。它们以http://<directory-name>.test
的形式提供。
要查看所有注册的目录,请使用paths
命令。
此命令与Mac版本相同。有关更多信息,请访问Laravel Valet文档。
已停放
parked List all the current sites within parked paths
注意:如果有停放站点也是符号链接站点,那么它还会输出链接站点名称(也称为别名)和它的URL(也称为别名URL)。
$ valet parked ┌───────────────────────────────────────────────┐ | Site: site1 | | Alias: | | SSL: | | PHP: 7.4.33 (isolated) | | URL: http://site1.test | | Alias URL: | | Path: D:\_Sites\site1 | ├───────────────────────────────────────────────┤ | Site: another site | | Alias: another_site_renamed | | SSL: | | PHP: 8.1.18 (default) | | URL: http://another site.test | | Alias URL: http://another_site_renamed.test | | Path: D:\_Sites\another site | └───────────────────────────────────────────────┘
unpark|forget
unpark | forget Remove the current working directory from Valet
[path] Optionally, specify a path
要停止将子目录自动作为站点提供,请运行forget
命令来forget
目录。
unpark
是命令别名。
$ cd /d/sites $ valet forget $ valet unpark This directory has been removed from Valet. $ valet forget d/sites $ valet unpark d/sites The [d/sites] directory has been removed from Valet.
link
link Register the current working directory as a symbolic link
[name] Optionally specify a new name to be linked as
[--secure] Optionally secure the site
[--isolate=] Optionally isolate the site to a specified PHP version
link
是另一种将目录作为站点提供的方法,但它只在一个目录中提供一个单独的站点,而不是整个目录。它通过在/.config/valet/Sites
目录中创建符号链接来实现,该目录是Valet安装中的parked
目录。
将当前工作目录作为站点提供
$ cd /d/sites/site1 $ valet link A [site1] symbolic link has been created in [C:/Users/Username/.config/valet/Sites/site1].
name
如果您希望以与目录不同的名称提供站点,只需传递可选的name
参数。这在目录名称中包含空格时非常有用,因为Valet不会对空格或其他非URL安全字符进行URL编码,所以不更改它则站点无法工作。
$ cd /d/sites/my awesome site $ valet link my_site_renamed A [my_site_renamed] symbolic link has been created in [C:/Users/Username/.config/valet/Sites/my_site_renamed].
--secure
--secure
选项允许您加密站点。它是布尔值,因此如果存在,则为true
,否则为false
。
$ valet link cool_site --secure A [cool_site] symbolic link has been created in [C:/Users/Username/.config/valet/Sites/cool_site]. The [cool_site.test] site has been secured with a fresh TLS certificate.
--isolate
--isolate
选项允许您将站点隔离到特定的PHP版本。使用值传递它。
$ valet link cool_Site --isolate=7.4 A [cool_site] symbolic link has been created in [C:/Users/Username/.config/valet/Sites/cool_site]. The site [cool_site.test] is now using 7.4.
此命令与Mac版本相同。有关更多信息,请参阅Laravel Valet文档。
links
links List all registered symbolic links
$ valet links ┌─────────────────┬─────────┬──────────────────┬─────────────────────────────┬───────────────────────────────────────┐ | Site | Secured | PHP | URL | Path | ├─────────────────┼─────────┼──────────────────┼─────────────────────────────┼───────────────────────────────────────┤ | my_site_renamed | | 8.1.18 (default) | http://my_site_renamed.code | D:\_Sites\a_completely_different_name | ├─────────────────┼─────────┼──────────────────┼─────────────────────────────┼───────────────────────────────────────┤ | cool_site | X | 7.4.33 (isolated)| http://cool_site.code | D:\_Sites\cool and awesome site | └─────────────────┴─────────┴──────────────────┴─────────────────────────────┴───────────────────────────────────────┘
unlink
unlink Unlink the current working directory linked site
[name] Optionally specify the linked site name
unlink
从当前工作目录(cwd)的符号链接站点中删除。Valet将使用cwd名称找到链接站点名称,并从/.config/valet/Sites/
目录中删除符号链接。
$ cd /d/sites/my site $ valet unlink The [cool_site] symbolic link has been removed.
name
name
指定符号链接的名称。
$ valet unlink cool_site The [cool_site] symbolic link has been removed.
注意:如果链接站点是已加密
的,Valet将在删除之前解密它。
$ valet unlink cool_site Unsecuring cool_site... The [cool_site] symbolic link has been removed.
注意:如果链接站点是隔离
的,Valet将在删除之前取消隔离。
$ valet unlink cool_site The site [cool_site] is now using the default PHP version. The [cool_site] symbolic link has been removed.
proxy
proxy [site] [host] Proxy a specified site to a specified host
[--secure] Optionally, secure with a trusted TLS certificate
proxy
允许您将Valet站点代理到机器上的另一个服务,并将所有流量从Valet站点发送到该服务。您也可以通过逗号分隔将多个站点代理到1个主机。
$ valet proxy site1 http://127.0.0.1:9200 Valet will now proxy [http://site1.test] traffic to [http://127.0.0.1:9200] $ valet proxy site1,site2,site3 https://127.0.0.1:9200 Valet will now proxy [http://site1.test] traffic to [http://127.0.0.1:9200] Valet will now proxy [http://site2.test] traffic to [http://127.0.0.1:9200] Valet will now proxy [http://site3.test] traffic to [http://127.0.0.1:9200]
proxy --secure
--secure
选项允许您加密代理站点。它是布尔值,因此如果存在,则为true
,否则为false
。
$ valet proxy site1 https://127.0.0.1:9200 --secure Valet will now proxy [https://site1.test] traffic to [https://127.0.0.1:9200]
proxies
proxies List all the proxy sites
$ valet proxies ┌───────┬─────────┬────────────────────┬────────────────────────┐ | Site | Secured | URL | Host | ├───────┼─────────┼────────────────────┼────────────────────────┤ | site1 | X | https://site1.test | https://127.0.0.1:9200 | └───────┴─────────┴────────────────────┴────────────────────────┘
unproxy
unproxy [site] Remove a proxied site
就像proxy
命令一样,您可以通过逗号分隔一次取消代理多个站点。
$ valet unproxy site1 Valet will no longer proxy [http://site1.test]. $ valet unproxy site1,site2,site3 Valet will no longer proxy [http://site1.test]. Valet will no longer proxy [http://site2.test]. Valet will no longer proxy [http://site3.test].
sites
sites List all the parked, linked, and proxied sites
$ valet sites ┌──────────────┬────────────┬─── Parked ───────────────┬────────────────────────┐ | Site | PHP | URL | Path | ├──────────────┼────────────┼──────────────────────────┼────────────────────────┤ | site1 | 7.4.33 | https://site1.test | D:\_Sites\site1 | | | (isolated) | | | ├──────────────┼────────────┼──────────────────────────┼────────────────────────┤ | site-test | 8.1.8 | http://site-test.test | D:\_Sites\site-test | | | (default) | | | ├──────────────┼────────────┼──────────────────────────┼────────────────────────┤ | awesome site | 8.1.8 | http://awesome site.test | D:\_Sites\awesome site | | | (default) | | | └──────────────┴────────────┴──────────────────────────┴────────────────────────┘ ┌──────────────┬────────────┬───────── Linked ─────────┬────────────────────────┐ | Site | PHP | URL | Path | ├──────────────┼────────────┼──────────────────────────┼────────────────────────┤ | awesome_site | 8.1.8 | http://awesome_site.test | D:\_Sites\awesome site | | | (default) | | | └──────────────┴────────────┴──────────────────────────┴────────────────────────┘ ┌─────────┬───────────────── Proxied──┬────────────────────────┐ | Site | URL | Host | ├─────────┼───────────────────────────┼────────────────────────┤ | my_site | http://awesome_site.test | http://127.0.0.1:9200 | └─────────┴───────────────────────────┴────────────────────────┘
共享
注意:ngrok 内置了 Valet,无需单独下载。
分享
share Share the current working directory site with a publically accessible URL
[site] Optionally, specify a site
[-o|--options] Optionally, specify ngrok options/flags
[--debug] Allow error messages to output to the current terminal
$ cd /d/sites/site1 $ valet share $ valet share site1
公开分享您的本地站点。ngrok 将为您完成所有魔法,并提供一个可供客户端或团队成员访问的公开 URL。
在用 ngrok 分享站点之前,您必须首先使用 Valet 的 set-ngrok-token
命令 设置 authtoken。
使用命令时,将启动一个新的 CMD 终端,其中包含 ngrok 信息,包括公开的 URL。
注意:URL 不会复制到剪贴板,但在单独的终端中,您可以使用 fetch-share-url
命令。
share --options
--options
(快捷键 -o
)[可选] 是 ngrok 的 http
命令(valet share
内部使用)的选项/标志。它是一个字符串,但可以指定多个选项。请参阅有关此选项的 重要说明。
$ valet share site1 --options domain=example.com//region=eu//request-header-remove="header to remove" $ cd /d/sites/site1 $ valet share -o domain=example.com
注意:如果您已经在分享一个项目,并尝试同时分享另一个项目,新的 cmd 窗口可能只会打开一秒钟然后关闭。这是由于 ngrok 静默失败,不会输出任何错误消息。要输出错误,请将 --debug
标志传递给命令。这将导致 ngrok 尝试在当前终端而不是新窗口中运行,从而发送错误消息。
auth|set-ngrok-token
auth | set-ngrok-token [authtoken] Set the ngrok authtoken.
auth
是一个命令别名。
$ valet set-ngrok-token 123abc $ valet auth 123abc Authtoken saved to configuration file: C:/Users/Username/.config/valet/ngrok/ngrok.yml
在用 ngrok 分享站点之前,您必须首先设置 authtoken,该 authtoken 可以在您的 ngrok 账户中访问。
url|fetch-share-url
url | fetch-share-url Get and copy the public URL of the current working directory site that is currently being shared
[site] Optionally, specify a site
url
是一个命令别名。
一旦使用 valet share
分享站点,您就可以在单独的终端中使用此命令获取公开 URL。URL 将输出到终端,并也会复制到剪贴板,便于使用。
$ cd /d/sites/site1 $ valet fetch-share-url The public URL for site1 is [ngrok public URL] It has been copied to your clipboard. $ valet fetch-share-url site1 $ valet url site1 The public URL for site1 is [ngrok public URL] It has been copied to your clipboard.
ngrok
ngrok [commands] Run ngrok commands
[-o|--options] Specify ngrok options/flags.
由于 ngrok CLI 有许多命令和选项,valet ngrok
命令对于传递任何和所有命令到 ngrok 来说是非常有用的。
ngrok 命令
commands
参数是一个空格分隔的命令及其参数值的数组。
$ valet ngrok config add-authtoken 123abc
ngrok --options
可以使用 --options
(快捷键 -o
)[可选] 向 ngrok 传递选项/标志。它是一个字符串,但可以指定多个选项。请参阅有关此选项的 重要说明。
$ valet ngrok config add-authtoken 123abc --options config=C:/path/ngrok.yml//log=false $ valet ngrok config add-authtoken 123abc -o config=C:/path/ngrok.yml//log=false
其他命令
tld
tld Get the TLD currently being used by Valet
[tld] Optionally, set a new TLD
tld
获取 Valet 当前使用的顶级域名(TLD)。
$ valet tld test
在开发时,您可能希望使用不同的 TLD。Valet 默认使用 .test
TLD 提供站点服务,但您也可以使用此命令设置不同的 TLD,只需将新的 TLD 作为参数传递即可。
$ valet tld code Your Valet TLD has been updated to [code].
需要注意的是,在选择 TLD 时,您需要小心不要使用可能用于网络的 TLD。如果您的站点名称和 TLD 与实际的网址匹配,则浏览器将解析请求并将其重定向到实际网站,而不是 Valet 将其解析为您的本地项目。
示例:您的本地 Roots Bedrock 站点在 bedrock.dev
将重定向到 Minecraft Bedrock 网站。
通常,Wikipedia 上列出的 特殊用途域名,以及任何独特的自定义域名,如 .code
,都是可以使用的,因为它们都不是有效的 TLD。
此命令与 Mac 版本相同。注意:Mac 版本已正式停止使用;而 Valet Windows 3 则不会。
which
which Determine which Valet driver the current working directory is using
$ cd /d/sites/site1 $ valet which This site is served by [BasicValetDriver].
paths
paths List all of the paths registered with Valet
paths
允许您查看所有已注册的路径。默认路径是 .config/valet/Sites
,其他路径可通过 park
命令添加。
$ valet paths ┌───────────────────────────────────────┐ │ Paths │ ├───────────────────────────────────────┤ │ C:/Users/Username/.config/valet/Sites │ ├───────────────────────────────────────┤ │ D:/Sites │ └───────────────────────────────────────┘
open
open Open the current working directory site in the browser
[site] Optionally, specify a site
$ cd /d/sites/site1 $ valet open $ valet open site1
latest|on-latest-version
latest | on-latest-version Determine if this is the latest version/release of Valet
latest
是一个命令别名。
$ valet on-latest-version $ valet latest Yes
on-latest-version
确定安装的 Valet 版本是否为最新。如果不是,则 Valet 会提示您更新。
log
log View and follow a log file
[key] The name of the log
[-l|--lines] The number of lines to view
[-f|--follow] Follow real time streaming output of the changing file
$ valet log nginx --lines=3 --follow $ valet log nginx -l 3 -f
log
允许您查看 Valet 服务编写的日志。要查看日志列表,只需运行 valet log
。
$ valet log ┌───────────────────────┬───────────────────────────────────────────────────────────────┐ │ Key │ File │ ├───────────────────────┼───────────────────────────────────────────────────────────────┤ │ nginx │ C:/Users/Username/.config/valet/Log/nginx-error.log │ ├───────────────────────┼───────────────────────────────────────────────────────────────┤ │ nginxservice.err │ C:/Users/Username/.config/valet/Log/nginxservice.err.log │ ├───────────────────────┼───────────────────────────────────────────────────────────────┤ │ nginxservice.out │ C:/Users/Username/.config/valet/Log/nginxservice.out.log │ ├───────────────────────┼───────────────────────────────────────────────────────────────┤ │ nginxservice.wrapper │ C:/Users/Username/.config/valet/Log/nginxservice.wrapper.log │ ├───────────────────────┼───────────────────────────────────────────────────────────────┤ │ phpcgiservice.err │ C:/Users/Username/.config/valet/Log/phpcgiservice.err.log │ ├───────────────────────┼───────────────────────────────────────────────────────────────┤ │ phpcgiservice.out │ C:/Users/Username/.config/valet/Log/phpcgiservice.out.log │ ├───────────────────────┼───────────────────────────────────────────────────────────────┤ │ phpcgiservice.wrapper │ C:/Users/Username/.config/valet/Log/phpcgiservice.wrapper.log │ └───────────────────────┴───────────────────────────────────────────────────────────────┘
要查看日志,需要 key
。它可以在日志列表中找到。
--lines
--lines
(快捷键 -l
)选项更改要查看的日志行数。
$ valet log nginx --lines=3 $ valet log nginx -l 3
--follow
--follow
(快捷键 -f
)选项可用于实时跟踪更改文件的输出。
$ valet log nginx --follow $ valet log nginx -f
注意:--follow
被设置为“永远”流输出(尽管永远也不可能太确定它是否真的永远)。要停止输出流,请按 ctrl+C
。
services
services List the installed Valet services
$ valet services Checking the Valet services... ┌───────────────────┬────────────────────────────────┬───────────────┐ | Service | Windows Name | Status | ├───────────────────┼────────────────────────────────┼───────────────┤ | acrylic | AcrylicDNSProxySvc | running | ├───────────────────┼────────────────────────────────┼───────────────┤ | nginx | valet_nginx | running | ├───────────────────┼────────────────────────────────┼───────────────┤ | php 8.1.8 | valet_php8.1.8cgi-9001 | running | ├───────────────────┼────────────────────────────────┼───────────────┤ | php 7.4.33 | valet_php7.4.33cgi-9002 | running | ├───────────────────┼────────────────────────────────┼───────────────┤ | php-xdebug 8.1.8 | valet_php8.1.8cgi_xdebug-9101 | not installed | ├───────────────────┼────────────────────────────────┼───────────────┤ | php-xdebug 7.4.33 | valet_php7.4.33cgi_xdebug-9102 | running | └───────────────────┴────────────────────────────────┴───────────────┘
directory-listing
directory-listing Determine directory-listing behaviour. Default is off, which means a 404 will display
[status] Optionally, switch directory listing [on, off]
$ valet directory-listing Directory listing is off $ valet directory-listing on Directory listing setting is now: on
diagnose
diagnose Output diagnostics to aid in debugging Valet.
[-p|--print] Optionally print diagnostics output while running
[--plain] Optionally print and format output as plain text (aka, pretty print)
$ valet diagnose Running diagnostics... [Diagnostics output here]
诊断结果将作为格式化的 HTML 复制到剪贴板,便于问题报告。
parity
parity Output the calculation of the percentage of parity completion against Laravel Valet (macOS) of a specific version.
$ valet parity Out of a total 39 commands, 36 are possible for parity, with 34 complete, and 11 brand new commands. Parity at 87% out of a total 92% possible parity with the Laravel Valet (macOS) v4.3.0
该命令是一种确定已达到多少校验的方法。
所有 --options
的说明
这些是有关具有 --options
或 --valetOptions
的命令的 重要说明。
-
--options
、--valetOptions
(快捷键-o
)选项可用于向与该命令相关的服务传递选项/标志。只需传递选项名称,无需
--
前缀,例如--options=config=C:/path/ngrok.yml
(ngrok
命令的示例)。这样,Valet 就不会将其与自己的选项混淆。传递的所有选项/标志将在 Valet 处理命令后加上
--
前缀,除非它是单个字符的快捷键,则将加上-
。上面的示例将作为--config=C:/path/ngrok.yml
运行。 -
命令选项后面的
=
是可选的,如果省略,则必须使用空格代替。--options=option1 --options option1 --valetOptions=option1 --valetOptions option1
-
选项也有
-o
快捷键,并且不能有=
字符,它必须使用空格进行分隔。-o option1
这与 Symfony 的文档一致,并符合命令行标准。
有关更多信息,请参阅 Symfony 的文档
请注意,为了符合 docopt 标准,长选项可以在空格或
=
符号之后指定它们的值(例如--iterations 5
或--iterations=5
),但短选项只能使用空格或根本不使用分隔符(例如-i 5
或-i5
)。 -
选项还允许传递多个选项,只需用双斜杠
//
分隔即可。--valetOptions=option1//option2//option3 --options option1//option2//option3 -o option1//option2//option3
命令校验器
已测试并实现校验的命令
- composer - 不适用
- diagnose
- directory-listing
- fetch-share-url
- forget
- install
- isolate
- isolated
- link
- links
- log
- loopback - 不适用
- on-latest-version
- open
- park
- 已停放
- paths
- php(代理命令到 PHP CLI)- 可能是未来的功能?
- proxies
- proxy
- 重启
- secure
- 已加密
- set-ngrok-token
- 分享
- share-tool - 下一个功能版本
- start
- status - 已重命名为
services
- 停止
- tld
- trust - 不适用
- 卸载
- unisolate
- unlink
- unproxy
- 未加密
- use
- which
- which-php - 已重命名为
php:which
要查看实现的校验量,请参阅 parity 命令。
弃用和移除
已知问题
-
WSL2 分发版本由于 Acrylic DNS 代理失败(microsoft/wsl#4929)。请使用
valet stop
,启动 WSL2 然后valet start
。 -
PHP-CGI 进程使用端口 9001。如果已被占用,请将其更改在
~/.config/valet/config.json
中,然后再次运行valet install
。 -
在共享站点时,URL 不会被复制到剪贴板。
-
您必须从安装 Valet 的驱动器运行所有命令似乎在所有驱动器上都能正常运行。valet
命令,除了 park 和 link。请参阅 #12。 -
如果您的机器未连接到互联网,您必须手动将域名添加到您的
hosts
文件中,或者您可以安装 Microsoft Loopback Adapter,因为这模拟了一个 Valet 可以绑定的活动本地网络接口。 -
当尝试在 PHP 7.4 上运行 Valet 并出现以下错误时
Composer 侦测到您的平台存在错误
您的 Composer 依赖项需要 PHP 版本 ">= 8.1.0"。您正在运行 7.4.33。
PHP 致命错误:Composer 侦测到您的平台存在错误:您的 Composer 依赖项需要 PHP 版本 ">= 8.1.0"。您正在运行 7.4.33。在 C:\Users\Username\AppData\Roaming\Composer\vendor\composer\platform_check.php 的第 24 行
这意味着 Valet 的依赖项中的一个依赖项需要 8.1。您可以通过在 7.4 上运行
composer global update
来纠正此错误,并且 composer 将将所有全局依赖项降级到可以在 7.4 上运行的版本。请参阅此 Stack Overflow 答案。注意 #1:这当然会将所有全局包降级。根据包的不同,可能会破坏某些事物。如果您只想降级 valet 依赖项,则可以指定 Valet 命名空间。
composer global update ycodetech/valet-windows
。注意 #2:无论如何,建议使用 PHP 8.1,降级可能会导致终端输出中的一些事物损坏或引起视觉瑕疵。所以降级风险自负。
注意 #3:在运行
composer global update
之前,请确保卸载 Valet,以确保在 composer 删除和更新之前所有服务都已停止和卸载。 -
如果您使用的是使用 .env 文件设置域名名的框架,例如 Laravel Bedrock 的
WP_HOME
,那么请确保顶级域名与 Valet 设置的相同。否则,当尝试访问站点时,站点将自动重定向到 .env 中设置的 TLD。示例:
WP_HOME='http://mySite.test'
,Valet 接收到对http://mySite.dev
的请求,站点将自动重定向到http://mySite.test
。如果在更改 TLD 后仍然发生这种情况,那么它已经被浏览器缓存了,尽管 NGINX 已指定不要缓存头。要纠正,请尝试页面重载按钮的“清除缓存并强制刷新”选项。
-
在罕见情况下,您可能会遇到 WMI 错误
致命 - WMI 操作失败:InvalidServiceControl
WMI.WmiException:InvalidServiceControl
在 WMI.WmiRoot.BaseHandler.CheckError(ManagementBaseObject result)
在 WMI.WmiRoot.InstanceHandler.Invoke(Object proxy, MethodInfo method, Object[] arguments)
在 WinSW.Program.<Run>gStop|2_3(<>cDisplayClass2_0& )
在 WinSW.Program.Run(String[] argsArray, IWinSWConfiguration descriptor)
在 WinSW.Program.Main(String[] args)当使用
valet use
时,此错误可能是由于 Valet 试图两次停止 nginx 服务造成的,其中 此提交 尝试修复。尽管调试只发生 1% 时间的错误很困难,而且当它发生时,信息毫无用处。如果发生 WMI 错误,请再次运行该命令。如果发生不同的 WMI 错误,请提交包含所有相关详细信息的 issue。
Xdebug 安装
Valet 仅在单独的端口上安装特定的 Xdebug PHP CGI 服务,以便与 PHP 服务一起工作。要安装 Xdebug 本身,请遵循 官方指南。
配置Xdebug时,请确保将Xdebug端口号设置为与Valet为Xdebug CGI服务设置的端口号相同。您可以在Valet配置中找到相关信息,或者使用php:list命令。
要启用调试会话,您可以使用Xdebug helper,设置名为XDEBUG_SESSION
的cookie,或者使用VScode扩展。
开发注释:我对Xdebug的工作原理不是完全清楚。因此,请参考在线指南以获取更多指导。
贡献者
Taylor Otwell等 - Laravel Valet
Cretueusebiu - Valet Windows端口
Iamroi - Valet Windows:多PHP支持的特性PR
Damsfx - Valet Windows:在Iamroi的仓库中添加PHP版本的links
命令的补丁PR
yCodeTech - Laravel Valet Windows 3
Hemant-kr-meena - 多个PR
Onecentlin - 更新Laravel Installer要求的PR
Jerrens - 更改AcrylicDNS绑定地址的PR
变更日志
请参阅CHANGELOG以获取最近更改的详细信息。
许可证
Laravel Valet是开源软件,使用MIT许可证授权。