【问题标题】:Pinging test.dev after Laravel Valet install returns "Unknown Host"Laravel Valet 安装后 Ping test.dev 返回“未知主机”
【发布时间】:2016-10-09 17:54:08
【问题描述】:

更新:不要使用“.dev”。当这最初是在 2016 年发布时,它很好。现在不是了。首先将您的 TLD 更改为“.localhost”之类的其他名称。 (此更改不会解决我的问题,但如果您仍在使用“.dev”,它可能会解决您的问题)。

问题:我已经安装了 Laravel Valet,除了我 ping test.dev(它只包含一个 index.htm 文件并且位于 ~/Sites)之后,它似乎都可以正常工作,之后挂了很久才收到回复ping: cannot resolve test.dev: Unknown host

这是我已经完成的:

  • 我已经通过the Laravel Valet docs 并且一切都安装得很好。
  • Apache 没有运行
  • /etc/hosts 未提及 test.dev
  • 我正在代客 v1.1.12
  • 我已重新启动计算机
  • 我已经通过 homebrew fresh 和 --with-fpm 安装了 php 7.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,然后是一个异常:

[Httpful\Exception\ConnectionErrorException]                                                                              
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

【问题讨论】:

  • 在 OSX 上打开 console 并搜索 dnsmasq。可能会有failed to create listening socket for {IP}: Permission deniedfailed to start up等错误。

标签: php laravel laravel-5 laravel-valet


【解决方案1】:

问题最终与dnsmasq 有关。使用非常彻底的this answer 到另一个相关的 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 未被代客/球童识别为潜在的索引文件。不是问题的一部分,但需要注意一些有趣的事情。

【讨论】:

  • 解析为 127.0.53.53 的内部域意味着您有名称冲突,ICANN 正试图告诉您您迫切需要修复您的 DNS 配置。您可以使用dig -t TXT test.dev +short 获取信息,但它可能会说需要注意,您应该看到icann.org/namecollision
  • 谢谢本。在我的路由器或 OS X 网络首选项上使用 Google 的 DNS 会产生此问题吗?我猜这不是原因,而是命名空间可能泄漏到了哪里,但我不确定在哪里寻找它是如何首先泄漏到公共空间的。有什么提示吗?
  • 来看看它是否会泄漏,因为它应该。 iyware.com/dont-use-dev-for-developmentiana.org/domains/root/db/dev.html 表示“.dev”是一个委托 TLD(Google 拥有)。 127.0.53.53 的响应更有意义,因为我使用 Google 作为 DNS 而不是我的 ISP。警告是不要将.dev TLD 用于开发环境。相反,请使用建议的 TLD,例如 .localhost(这是我通过 valet domain localhost 将代客更改为使用的。瞧。
【解决方案2】:

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

sudo brew services start --all

【讨论】:

  • 我一直在拔头发(不是真的,我是秃头)一个星期来尝试一切!谢谢!
【解决方案3】:

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

运行后

brew services list

我注意到除 dnsmasq 之外的所有服务都以“root”身份运行,但 dnsmasq 正在我的用户上运行。

停止了dnsmasq
brew services stop dnsmasq

并开始于:

sudo brew services start dnsmasq

经过几个小时的挫折,这对我有用。

【讨论】:

    【解决方案4】:

    上面提到的在macos sierra上没有任何帮助,但有一点点说:

    因为我使用 Google 作为 DNS 而不是我的 ISP。警告是不要将 .dev TLD 用于开发环境。相反,请使用建议的 TLD,如 .localhost(这是我通过代客域 localhost 更改代客使用的。瞧。- Nate Ritter

    避免使用“.dev”并使用“.devel”对我有用,如果您使用 google 的 8.8.8.8 dns 可能需要

    【讨论】:

      【解决方案5】:

      *.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。否则它将转到您的默认搜索引擎。

      【讨论】:

      • 没错,但在 16 年发布 OP 时,确实如此。不过好点。
      • 谢谢@Krishnadas。现在,在 2018 年,您的答案优先。在看到您的回复之前,其他答案都没有帮助我,而且我一直在担心。
      【解决方案6】:

      如果你刚刚开始使用 Laravel 并遵循 Laracast 教程,请务必阅读最新的文档。

      在 Laravel 5.6 和 Valet 2.0.12 中,*.dev 域被 *.test 替换,你可以在这里看到:https://laravel.com/docs/5.6/valet#installation

      【讨论】:

      • 刚刚来自 jway 使用 *.dev 的(旧)laracast 视频,你拯救了我的一天,谢谢
      【解决方案7】:

      对我来说,不知何故,一个语法错误潜入了 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
      

      希望这对某人有所帮助!

      【讨论】:

      • 在我的例子中,dnsmasq --test 返回了dnsmasq: failed to create listening socket for 127.0.0.1: Permission denied,这是一个很大的危险信号!
      猜你喜欢
      • 1970-01-01
      • 2016-08-07
      • 2018-09-21
      • 1970-01-01
      • 2020-08-02
      • 2018-06-11
      • 2021-05-18
      • 2018-07-14
      • 2013-06-12
      相关资源
      最近更新 更多