在安装Laravel Valet后 test.dev ping返回"Unknown Host"



更新:不要使用".dev"。当它最初在2016年发布时,它还可以。现在不是了。首先将TLD更改为其他类型,如"localhost"或其他类型。(这个更改不会解决我的问题,但如果你仍然使用".dev",它可能会解决你的问题)

问题:我已经安装了Laravel Valet,除了当我ping test.dev(它只包含一个index.htm文件,位于~/Sites中)时,它似乎都在工作,在挂起很长一段时间后,我得到了响应ping: cannot resolve test.dev: Unknown host

以下是我已经做过的:

  • 我已经浏览了Laravel Valet文档,一切都安装得很好
  • Apache未运行
  • /etc/hosts未提及test.dev
  • 我使用代客泊车v11.12
  • 我已重新启动计算机
  • 我已经通过自制程序fresh和--with-fpm安装了php7.0.7
  • 我的$PATH包含$PATH:$HOME/.composer/vendor/bin
  • sudo lsof -n -i:80 | grep LISTEN返回caddy过程
  • brew services list返回dnsmasq并启动
  • 我已经更新了brew,运行了brew doctor,一切都很好
  • 我可以成功启动和停止代客泊车
  • valet paths返回成功: [ "/Users/nateritter/.valet/Sites", "/Users/nateritter/Sites" ]
  • test目录中使用valet link对此问题没有影响

现在,除此之外,我决定尝试所有代客泊车的论点。valet share似乎一度出现了一个错误,这很有趣,但我不确定它是否与最初的问题有关。

ERROR: Tunnel 'command_line' specifies invalid address 'test.dev:80': unexpected '[' in address test.dev:80

在这之后,我得到了21行Failed to connect to 127.0.0.1 port 4040: Connection refused,然后是一个异常:

[HttpfulExceptionConnectionErrorException]                                                                              
Unable to connect to "http://127.0.0.1:4040/api/tunnels": 7 Failed to connect to 127.0.0.1 port 4040: Connection refused                                                                                                                              
fetch-share-url

问题最终与dnsmasq有关。在另一篇相关的SO帖子中使用了非常彻底的这个答案,我最终做了以下事情来解决我的问题:

brew unlink dnsmasq

brew install dnsmasq

brew prune

brew services restart dnsmasq

valet install

然后,为了在我做ping之前进行测试,我做了dig test.dev,响应包括:

;; ANSWER SECTION:
test.dev.       3599    IN  A   127.0.53.53

我不知道为什么IP是127.0.53.53而不是127.0.0.1,但当我做ping test.dev时,它确实返回了。。。

PING test.dev (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.036 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.072 ms

浏览test.dev也很有效。

需要注意的是,我还没有研究过index.htm没有被代客/助手识别为潜在的索引文件。这不是问题的一部分,但值得注意的是一些有趣的事情。

我遇到了同样的问题,一些酿造服务被停止,运行这个命令修复了它:

sudo brew services start --all

我已经正确设置了所有内容,但遇到了同样的问题-无法运行app.dev。

运行后

brew services list

我注意到,除了dnsmasq之外,所有服务都以"root"身份运行,但dnsmasqu是在我的用户上运行的。

已停止使用的dnsmasq

brew services stop dnsmasq

并以开始

sudo brew services start dnsmasq

在经历了几个小时的挫折之后,这对我起到了作用。

上面提到的对我的macos sierra没有任何帮助,但有一句话确实帮助了我:

因为我使用谷歌进行DNS而不是ISP。警告是不要将.dev TLD用于开发环境。相反,使用建议的TLD,如localhost(这是我通过代客域localhost.Voila.–Nate Ritter 将代客更改为使用的)

避免使用".dev"和使用".devel"对我来说很有用,如果你在谷歌的8.8.8.8 dns 上,可能需要

*.dev不再工作,因为它是一个真正的TLD。所以使用其他类似*.test*.local的东西。

ping dev.test
PING dev.test (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.051 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.149 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.137 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.133 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.138 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.166 ms
64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.142 ms

另外,不要忘记将http://或https://添加到您的域中,如http://blog.test第一次在浏览器中打开。否则,它将转到您的默认搜索引擎。

如果您刚刚开始使用Laravel并遵循Laracast教程,请确保还阅读了最新的文档。

在Laravel 5.6和Valet 2.0.12中,*.dev域被*.test取代,如下所示:https://laravel.com/docs/5.6/valet#installation

对我来说,dnsmasq.conf不知怎么地出现了一个语法错误,这将阻止它正确启动。

为了检查这一点,我进行了dnsmasq --test,这给出了以下输出dnsmasq: bad option at line 1 of /usr/local/etc/dnsmasq.conf

我修复了第1行的拼写错误,并使用brew services restart --all重新启动了所有服务

之后,我可以再次ping到.dev域,它在我的浏览器中工作

ping test.dev
PING test.dev (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.062 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.035 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.056 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.053 ms
--- test.dev ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.035/0.051/0.062/0.010 ms

希望这能帮助到一些人!

最新更新