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”......
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 服务器
在 Win XP 64 位上,无法连接到 XAMPP 下的本地 apache 安装。帮助!