当我尝试访问locahost:8080时,我得到了
The localhost page isn't working localhost didn't send any data. ERR_EMPTY_RESPONSE
但如果我尝试:
127.0.0.1:8080,我得到了我正在寻找的回应
我相信这与httpd(apache),我刚刚更新了自制httpd24(httpd.2.4)?
我按照从这个网站更新说明: https : //getgrav.org/blog/macos-sierra-apache-multiple-php-versions
使用brew安装httpd24后 ,您将拥有两个完全不同的Apache Web服务器环境:
两者都有不同的configuration文件和apachectl(和其他)二进制文件。 第一个安装到/ usr / local / Cellar / httpd24,其二进制文件链接到/ usr / local / bin。 macOS的httpd相关二进制文件位于/ usr / sbin。
根据你的PATHvariables(inputecho $PATH来获得它), sudo apachectl [cmd]可以控制第一个或第二个Apache环境。
在安装brew之后,默认的PATH应该是/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin ,它有利于brew的httpd24。 不过,您可以使用完整path(/ usr / sbin / apachectl)来控制macOS的Apache。
如果你有一个不赞同/ usr / local / bin的不同的path,那么这是相反的。 要获得受欢迎的apachectl的path,您也可以简单地inputwhich apachectl 。
使用/usr/local/bin/apachectl -S它,它应该会产生:
VirtualHost configuration: ServerRoot: "/usr/local/opt/httpd24" Main DocumentRoot: "/usr/local/var/www/htdocs" Main ErrorLog: "/usr/local/var/log/apache2/error_log" Mutex default: dir="/usr/local/var/run/apache2/" mechanism=default Mutex mpm-accept: using_defaults PidFile: "/usr/local/var/run/apache2/httpd.pid" Define: DUMP_VHOSTS Define: DUMP_RUN_CFG User: name="daemon" id=1 not_used Group: name="daemon" id=1 not_used
和/usr/sbin/apachectl -S
VirtualHost configuration: ServerRoot: "/usr" Main DocumentRoot: "/Library/WebServer/Documents" Main ErrorLog: "/private/var/log/apache2/error_log" Mutex default: dir="/private/var/run/" mechanism=default Mutex mpm-accept: using_defaults Mutex proxy-balancer-shm: using_defaults Mutex proxy: using_defaults PidFile: "/private/var/run/httpd.pid" Define: DUMP_VHOSTS Define: DUMP_RUN_CFG User: name="_www" id=70 not_used Group: name="_www" id=70 not_used
没有相互使用的文件/文件夹。
他们也使用不同的标准configuration文件:
/usr/local/bin/apachectl -t -D DUMP_INCLUDES Included configuration files: (*) /usr/local/etc/apache2/2.4/httpd.conf
该命令对于原始(macOS)apachectl无法正常工作,但只会生成:语法OK。
如果你运行两个httpds(在这里configuration不同的端口:80:macOS; 8080 httpd24 – 在相应的configuration文件中检查) ps -aef | grep httpd | grep -v grep ps -aef | grep httpd | grep -v grep ps -aef | grep httpd | grep -v grep将显示以下内容:
0 76 1 0 4:54pm ?? 0:00.13 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND 1 219 76 0 4:54pm ?? 0:00.00 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND 1 220 76 0 4:54pm ?? 0:00.00 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND 1 221 76 0 4:54pm ?? 0:00.00 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND 1 222 76 0 4:54pm ?? 0:00.00 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND 1 223 76 0 4:54pm ?? 0:00.00 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND 1 4239 76 0 5:06pm ?? 0:00.00 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND 0 8251 1 0 5:45pm ?? 0:00.08 /usr/sbin/httpd -D FOREGROUND 70 8261 8251 0 5:46pm ?? 0:00.00 /usr/sbin/httpd -D FOREGROUND
前七个pid属于httpd24,macOS的最后两个httpd – 检查列出的二进制path! 和nmap localhost :
Starting Nmap 7.31 ( https://nmap.org ) at 2016-12-22 18:00 CET Nmap scan report for localhost (127.0.0.1) Host is up (0.00039s latency). Other addresses for localhost (not scanned): ::1 fe80::1 Not shown: 499 closed ports, 498 filtered ports PORT STATE SERVICE 80/tcp open http 8080/tcp open http-proxy
在您的私人聊天消息中,您可以清楚地看到httpd24 根本没有运行,但是macOS的httpd 是 。
要禁用macOS的httpd,只需运行sudo /usr/sbin/apachectl stop和sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist (只是为了确定)。
然后通过停止服务和安装一个真正的plist守护进程,像链接的方法推荐的那样转储brew service start ...方法。
sudo cp -v /usr/local/Cellar/httpd24/2.4.23_2/homebrew.mxcl.httpd24.plist /Library/LaunchDaemons sudo chown -v root:wheel /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist sudo chmod -v 644 /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
重启。 如果在本地开发者站点仍然出现连接localhost:8080的错误,请在/ etc / hosts中将fe80::1%lo0 localhost注释掉。 在我的环境中,它适用于这一行。
经过进一步调查发现,错误configuration的Web代理(ESET的Internet Security / Antivirus的一部分)是罪魁祸首。 通过添加一个适当的localhost排除应该可以解决这个问题。