当我尝试访问任何文件夹或文件时,出现 apache 错误,它返回
Http Not found
或 Forbidden
我正在尝试重新启动并启动 apache
sudo apachectl restart
输出:
(48)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(48)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
我正在尝试阻止它
sudo apachectl stop
输出
httpd (no pid file) not running
我跑步
sudo lsof -i:80
输出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 8904 root 5u IPv6 0x21884d81f1597d8f 0t0 TCP *:http (LISTEN)
httpd 9012 _www 5u IPv6 0x21884d81f1597d8f 0t0 TCP *:http (LISTEN)
httpd 12726 _www 5u IPv6 0x21884d81f1597d8f 0t0 TCP *:http (LISTEN)
httpd 12731 _www 5u IPv6 0x21884d81f1597d8f 0t0 TCP *:http (LISTEN)
httpd 12732 _www 5u IPv6 0x21884d81f1597d8f 0t0 TCP *:http (LISTEN)
有办法解决这个问题吗?
有用信息:
OS X El Capitan
在我的 Mojave (10.14.1) Mac 上,突然 Apache 无法再提供 ipv4 服务,然后给我错误 403。我试图杀死所有 apache (sudo Killall httpd)...检查 PID 是否开启 (sudo lsof | grep AMP | grep apache)...甚至不起作用...只有 ipv6 可用...仍然错误 403。
对我有用:禁用 OSX 的内置 Apache 服务器。
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
之后:
sudo apachectl -k restart
要快乐:)
尝试
sudo netstat -ltnp | grep ':80'
输出:tcp6 0 0 :::80 :::* 监听 1500/apache2
sudo kill 1500
sudo service apache2 restart
这个对我有帮助:
请编辑httpd.conf文件。
/usr/local/etc/httpd/httpd.conf
并更换
Listen 80
与
Listen 127.0.0.1:80
重新启动阿帕奇
sudo apachectl -k restart
可能会发生以下几种情况之一:
which apachectl
来确保您使用的是正确的。举个例子,我还有两个版本的 apache /usr/sbin/apachectl
和 /usr/local/bin/apachectl
apachectl start
,尽管看起来您是这样。sudo lsof -i:80
查看当前绑定该端口的内容发生此错误是因为 apache 服务器默认侦听端口 80,因此另一个服务或程序正在使用该端口,并且 apache 无法启动。
解决方案是确定哪些程序或服务正在使用该端口,然后将其关闭、禁用或卸载。
为了识别您可以运行 netstat
sudo netstat -ltnp | grep ':80'
或
sudo lsof -i:80
就我而言,我同时安装了 nginx 和 apache,并且都使用端口 80。
临时解决方案:停止或终止服务、程序等
永久解决方案:
就我而言,我需要两者,所以我决定通过禁用该服务来临时修复它:
systemctl stop MyServiceName.service
如果是服务,否则使用kill命令。
我之前也这样设置过配置,上次升级 OSX 后遇到了同样的问题。我试图找到任何正在侦听端口 80 或 443 的东西,但在任何地方都找不到任何东西。 我花了一段时间,终于找到了另一篇描述实际有效修复的文章。 请记住,我使用的是自制软件安装,并卸载了 Mac OSX 附带的默认 apache2 安装。
这是我之前在 httpd.conf 中的内容:
Listen 80
我在 ssl.conf 中有类似的东西
Listen 443 https
我必须更改我的 httpd.conf 文件以使用 localhost 的 ServerName 并在 0.0.0.0:80 上监听,对于 ssl.conf 也是如此,但 0.0.0.0:443 https
httpd.conf:
ServerName localhost
Listen 0.0.0.0:80
和 ssl.conf
Listen 0.0.0.0:443 https
当我尝试再次启动它时,一切都很愉快。 希望有帮助! 我会链接到该文章,但我无法再次找到它!
嗯,看起来 httpd 已经在运行了。检查运行
lsof -i TCP:80
命令 PID 用户 FD 类型 设备大小/关闭节点名称
httpd 281 root 3u IPv6 19479 0t0 TCP *:80(监听)
....
所以杀死 httpd 并做你想做的事
如果您最近完成了软件更新,并且重命名或删除了 /etc/httpd/conf.d/ 中的任何默认文件,请查看那里。您可能有重复的指令,因为包管理器重新安装了它们。
就我而言,我在文件前添加了数字前缀,这样我就可以控制加载顺序...但是操作系统更新重新安装了原始文件,因此 我有两个带有“Listen 443”的文件,它们存在冲突并且未被语法检查捕获。删除操作系统文件解决了该问题。
(这次我保留了它们,但将它们清空,这样重新安装或更新时就会显示冲突)
我遇到这个错误是因为conf文件中重复的Listen on port 80 也请务必检查一下。
Listen 80
...
Listen 80