当我尝试访问 locahost:8080 时,我得到
The localhost page isn’t working
localhost didn’t send any data.
ERR_EMPTY_RESPONSE
但如果我尝试:
127.0.0.1:8080,我得到了我正在寻找的响应
我相信这与我刚刚用自制 httpd24(httpd.2.4) 更新的 httpd (apache) 有关吗?
我按照该站点的更新说明进行操作: https ://getgrav.org/blog/macos-sierra-apache-multiple-php-versions
使用 brew安装httpd24后,您将拥有两个完全不同的 Apache Web 服务器环境:
两者都有不同的配置文件和 apachectl(和其他)二进制文件。第一个安装到 /usr/local/Cellar/httpd24 并且它的二进制文件链接到 /usr/local/bin。macOS 的 httpd 相关二进制文件位于 /usr/sbin。
根据您的 PATH 变量(输入
echo $PATH
以获取它)sudo apachectl [cmd]
控制第一个或第二个 Apache 环境。安装 brew 后,默认 PATH 应该有
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
利于 brew 的 httpd24。不过,您可以使用完整路径 (/usr/sbin/apachectl) 来控制 macOS 的 Apache。如果你有一个不同的路径,它不喜欢 /usr/local/bin 而不是 /usr/sbin 它是相反的。要获得喜欢的apachectl的路径, 您也可以简单地输入
which apachectl
.检查这个
/usr/local/bin/apachectl -S
应该产生:和
/usr/sbin/apachectl -S
没有相互使用的文件/文件夹。
他们还使用不同的标准配置文件:
该命令不适用于原始(macOS)apachectl,但只会产生:语法OK。
如果您同时运行两个 httpds(在此处配置不同的端口:80:macOS;8080 httpd24 - 在相应的配置文件中检查)
ps -aef | grep httpd | grep -v grep
将显示以下内容:前七个 pid 属于 httpd24,后两个属于 macOS 的 httpd - 检查列出的二进制路径!和
nmap localhost
:在您的私人聊天消息中,您可以清楚地看到 httpd24根本没有运行,但 macOS 的 httpd是.
要禁用 macOS 的 httpd,只需运行
sudo /usr/sbin/apachectl stop
并附加sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
(只是为了确定)。brew service start ...
然后通过停止服务并安装真正的 plist 守护程序来转储该方法,如链接的操作指南中推荐的那样。重启。
fe80::1%lo0 localhost
如果您在使用 localhost:8080 连接到本地开发人员站点时仍然遇到错误,请在 /etc/hosts 中注释掉。但在我的环境中,它适用于这条线。经过进一步调查后发现,错误配置的 Web 代理(ESET Internet Security/Antivirus 的一部分)是罪魁祸首。通过添加适当的
localhost
排除,应该可以解决问题。