ycodetech/valet-windows

为Windows提供更愉悦的本地开发体验。Laravel Valet的Windows版本,也是cretueusebiu/valet-windows的分支,新增了许多功能。

v3.1.4 2024-08-06 02:49 UTC

This package is auto-updated.

Last update: 2024-09-06 02:58:46 UTC


README

Total Downloads Latest Stable Version Latest Unstable Version License

这是流行的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 startvalet 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.

此命令与Mac版本相同。

重启
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.

此命令与Mac版本相同。

停止
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.

此命令与Mac版本相同。

卸载
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:installphp: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.

此命令与Mac版本相同。

isolated
isolated  List all isolated sites
$ valet isolated
┌──────────┬────────┐
| Site     | PHP    |
├──────────┼────────┤
| site1    | 7.4.33 |
├──────────┼────────|
| my_site  | 7.4.33 |
└──────────┴────────┘

此命令与Mac版本相同。

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 |
└──────────────┘

此命令与Mac版本相同。

未加密
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.

此命令与Mac版本相同。

停放、链接、代理和站点

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.

此命令与Mac版本相同。

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       |
└─────────────────┴─────────┴──────────────────┴─────────────────────────────┴───────────────────────────────────────┘

此命令与Mac版本相同。

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.

此命令与Mac版本相同。

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]

此命令与Mac版本相同。

proxies
proxies  List all the proxy sites
$ valet proxies
┌───────┬─────────┬────────────────────┬────────────────────────┐
| Site  | Secured | URL                | Host                   |
├───────┼─────────┼────────────────────┼────────────────────────┤
| site1 | X       | https://site1.test | https://127.0.0.1:9200 |
└───────┴─────────┴────────────────────┴────────────────────────┘

此命令与Mac版本相同。

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].

此命令与Mac版本相同。

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 账户中访问。

此命令与Mac版本相同。

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.

此命令与Mac版本相同。

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].

此命令与Mac版本相同。

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                              │
└───────────────────────────────────────┘

此命令与Mac版本相同。

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

此命令与Mac版本相同。

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 会提示您更新。

此命令与Mac版本相同。

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

此命令与Mac版本相同。

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

此命令与Mac版本相同。

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 复制到剪贴板,便于问题报告。

此命令与Mac版本相同。

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.ymlngrok 命令的示例)。这样,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许可证授权。