AH00072: make_sock: 无法绑定到地址 [::]:80 (13) 权限被拒绝

AH00072: make_sock: could not bind to address [::]:80 (13)Permission denied

升级到 macOS Sierra 后,我的 Apache 无法启动。

apache 去了哪里 error_log:

AH00112: Warning: DocumentRoot [/usr/docs/dummy-host.example.com] does not exist

AH00112: Warning: DocumentRoot [/usr/docs/dummy-host2.example.com] does not exist

AH00557: httpd: apr_sockaddr_info_get() failed for username.local

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message (13)Permission denied:

AH00072: make_sock: could not bind to address [::]:80 (13)Permission denied: 

AH00072: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down*

我已经按照这些说明操作但没有成功:http://digitalshore.io/local-web-development-environment-apache-macos-sierra-10-12/

对于

中的前2条评论虚拟主机设置

httpd-vhosts.conf

对于 3,4 取消注释 ServerName 并在

中赋值

httpd.conf

ex: ServerName local_server:80

并在 /etc/hosts 中添加相同的值以通过服务器名称访问。

5,6 因为端口 80 被其他应用程序使用

sudo lsof -i:80

在我的例子中,问题是通过添加解决的:

127.0.0.1       MacBook-Air-de-xxxxxx.local

/etc/hosts 文件中。

找到准确的电脑名称,查看共享设置:

涉及 apr_sockaddr_info_get() 的错误可以通过为 /etc/apache2/httpd.conf 中的 ServerName 分配一个有意义的值(例如 localhost)来解决。

使用 sudo 打开 /etc/apache2/httpd.conf

参考: https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions

AH00558: httpd: Could not reliably determine the server's fully qualified domain name.

您需要通过以下方式识别 httpd.conf Apache 配置文件:

apachectl -t -D DUMP_INCLUDES

然后编辑它并取消注释带有 ServerName 的行(确保它具有有效的服务器名称)。例如

ServerName localhost

AH00072: make_sock: could not bind to address [::]:80 (13) Permission denied

您需要以 root 用户身份启动 Apache 服务,否则该进程无权绑定到端口 80,因为所有低于 1024 的端口都需要管理权限。

所以你需要 运行 作为:

sudo apachectl start