Apache 配置,无法连接到 localhost

Posted

技术标签:

【中文标题】Apache 配置,无法连接到 localhost【英文标题】:Apache Configuration, Cannot Connect to Localhost 【发布时间】:2016-12-25 07:34:31 【问题描述】:

我遇到了 Apache 2.4.18(在 OS X El Capitan 10.11.6 上)的问题,我无法确定原因是什么。我花了 4 天时间试图解决这个问题(包括在这里搜索),但我认输了,只是问。

我在这里没有什么经验。上周末遵循一些指南,我尝试设置我的系统,以便在我学习 html/javascript/php 时开发一个站点。按照一些指南,我安装了 dnsmasq 并尝试配置 httpd.conf 和 httpd-vhosts.conf。最初,localhost 将我引导到“It Works”页面,我的虚拟主机 home.dev 和 sites.dev 也是如此。无论我做什么,我都无法让任何 *.dev 站点指向我的 virtualdocumentroot 中的实际 index.html 文件。

我试过了

home.dev 添加到/etc/hosts 开启网络共享 已检查防火墙 - 端口 80 已打开 将 httpd.conf 中的 DocumentRoot 更改为虚拟主机文件中使用的根目录 尝试了许多不同的httpd-vhosts.conf 配置。 检查了我目录周围的引号 - 最初使用 textedit,它们有所不同,在 sublime 2 中进行了更改。 运行apachectl configtest - 语法没问题

现在问题变得更糟了。在使用配置文件试图解决这个问题时,我破坏了一些东西,我不知道是什么。不小心覆盖了 originals 文件夹中的 httpd.conf 文件。尝试使用httpd.conf文件我发现搜索默认,不起作用。在这一点上,我很高兴再次看到“It Works”......

Lo​​calhost、127.0.0.1、home.dev 等都打开“不可用”或拒绝连接页面。 运行sudo netstat -an | grep ':80' 没有返回任何结果,所以据我所知,即使httpd.conf 中有明确的声明listen 80,apache 似乎也没有在80 上监听。 运行apachectl configtest - 语法还可以 运行sudo apachectl restart - 似乎开始 在某处阅读,有人提到 /var/log/apache2 可能丢失并导致错误,它就在那里。错误日志没有任何内容

不确定我是否应该在此处发布我的 .conf,有什么建议吗?

谢谢!

8/20 更新:

还没有找到解决办法,但感觉自己在进步:

ping localhost 成功(来自 127.0.0.1 的 64 个字节) curl -v http://localhost/ 对所有尝试(::1、fe80::1、127.0.0.1 等)都返回“连接被拒绝”。

在某个地方,似乎 apache 正在运行(对吗??),我只是不明白在哪里或如何弄清楚。

sudo lsof -i -P | grep -i "listen" 不会返回在 *:80 上侦听的任何内容。也看不到任何听起来像 apache 的进程(只有 launchd、dnsmasq、mysqld、kdc 和 Skype)。

我的主机文件是这样设置的:

127.0.0.1 本地主机 255.255.255.255 广播主机 ::1 本地主机 fe80::1%lo0 本地主机

httpd.conf(之前是 Listen 80,此更改没有解决任何问题)

Listen 0.0.0.0:80

自 2 天前我不小心从 httpd.conf 中删除了 ServerName 后,错误日志中没有错误(将其添加回来):)

我可以输入 netstat/lsof 命令并找出 apache 正在侦听的端口吗?也许这会让我从正确的方向开始。

【问题讨论】:

我会尝试“ps auxw | grep httpd”,其中 httpd 是二进制文件的名称,看看它是否真的启动了。如果不尝试找出它没有启动的原因,“strace”或 MacOSX 中可能提供的任何类似工具可能会有所帮助。 Ps auxw | grep httpd 返回 PID 4488,状态 U+。似乎正在运行。 然后运行lsof -p 4488 它应该会显示它正在使用哪些端口。了解您用于运行服务器的命令的准确程度也很好。 @ezra-s 我真的很感谢你的帮助,昨晚让它运行起来了(见下文)。 Libphp5.so 导致了这个问题,所以注释掉让服务器恢复在线,直到我能解决这个问题。最初对我来说很难识别 - 本来以为这样的东西会出现在 Apache 的日志中。 【参考方案1】:

更新:

对于遇到此问题的其他人,希望我可以节省您尝试解决此问题的一周。

检查控制台以找到 httpd 的“ReportCrashes”(即使 sudo apachectl start 似乎可以工作,当再次运行该命令时,我会收到 service already loaded 消息。)搜索面包屑时我遇到了 https://discussions.apple.com/thread/6602475?tstart=0。

听起来很简单,在 httpd.conf LoadModule php5_module libexec/apache2/libphp5.so 中注释掉加载 PHP 模块可以解决所有问题。我现在可以访问本地主机。在我为自己进行更改而造成的混乱中,我认为它在 .conf 文件中,但没有原始文件可以恢复或查看问题。显而易见的建议 - 在更改 .conf 文件之前进行备份。

现在,当然,我不能使用 PHP,所以如果有人有任何提示,那就太棒了。 Libphp5.so存在于/libexec/apache2中,但我也在/usr/local/php5/中找到了Libphp7.so(版本问题??)

【讨论】:

你好,按照你说的做之后。它解决了我的麻烦,我仍然可以使用 php。在我的 Mac 上,有一个 /etc/apache2/other/+php-osx.conf 文件在 /usr/local/php5/libphp7.so 上加载 php7_module,这有帮助吗?

以上是关于Apache 配置,无法连接到 localhost的主要内容,如果未能解决你的问题,请参考以下文章

PHP 无法连接到端口 5222 上的 localhost XMPP 服务器

无法使用直线连接到配置单元,用户 root 无法模拟匿名

在 Win XP 64 位上,无法连接到 XAMPP 下的本地 apache 安装。帮助!

主机 'localhost' 不允许连接到这个 MySQL 服务器

MySqli无法连接到本地主机[重复]

无法使用php连接错误连接到mysql:无法连接到'localhost'(10061)上的MySQL服务器[重复]