更新:不要使用".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
希望这能帮助到一些人!