为什么apache拒绝在OSX上连接到localhost 127.0.0.1?

时间:2016-09-07 07:58:02

标签: macos apache localhost

尝试访问本地主机上的网站时,连接被拒绝。两天前,设置正在运行,没有配置多个虚拟主机的问题。我不知道任何可能影响设置的更改。我昨天花了一整天时间试图解决这个问题,但一直在圈子里。

操作系统:OSX 10.11.16

httpd -V返回:

Server version: Apache/2.4.18 (Unix)
Server built:   Feb 20 2016 20:03:19
Server's Module Magic Number: 20120211:52
Server loaded:  APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture:   64-bit
Server MPM:     prefork
   threaded:     no
   forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/usr"
 -D SUEXEC_BIN="/usr/bin/suexec"
 -D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"

httpd.conf配置为允许虚拟主机,httpd-vhosts.conf文件中没有任何更改。

LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
...
# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf

apachectl configtest返回:

Syntax OK

我已尝试为127.0.0.1运行端口扫描,http端口80 显示。这个以及被拒绝的联系让我觉得这就是问题所在,但我不知道为什么。 OSX防火墙已关闭。 I've tried the solution posted here但它没有解决它。

我的/ etc / hosts文件如下所示:

#
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
#    

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0     localhost
127.0.0.1       site.local
127.0.0.1       othersite.local
...

我可以ping 127.0.0.1。我之前安装了自制软件来运行不同的PHP版本但是我已经删除了它以尝试将系统恢复到库存。我真的不知道下一步该尝试什么,任何帮助都会非常感激。

4 个答案:

答案 0 :(得分:10)

升级php时发生在我身上。以下步骤让我重新走上正轨。

通常,mac会在升级之前创建备份。因此,我们将使用httpd.conf

的更新前版本
cd /etc/apache2/  
sudo mv httpd.conf httpd.conf-afterupdate  
sudo mv httpd.conf.pre-update httpd.conf  
sudo apachectl configtest  
sudo apachectl restart  

答案 1 :(得分:2)

在尝试调试这几天之后,我通过使用在升级到osx elcapitan时创建的旧文件覆盖我的httpd.conf文件来解决它。

sudo cp httpd.conf~elcapitan httpd.conf

执行此操作后,本地主机再次可访问。我不知道我以前的httpd.conf文件有什么问题。我经历了很多次寻找问题而从未找到任何问题。我甚至对这两个文件进行了分析,试着看看问题出在哪里,并且没有找到原因导致它失败的原因。

我再次使用localhost响应后,我完成了启用所需模块并重新配置虚拟主机的过程。

同样,我不知道其他httpd.conf文件有什么问题。也许它在某种程度上被腐蚀了。无论是apachectl configtest没有报告任何问题,它都会无声地失败。

因此,如果其他人遇到类似问题,则可能需要恢复到较旧的httpd.conf文件。升级完成后,OSX通常会创建备份。

答案 2 :(得分:2)

您可以检查以确保在/usr/local/etc/apache2/2.4/httpd.conf配置文件中有Listen: 80

答案 3 :(得分:0)

就我而言,httpd.conf 文件中的 DocumentRoot 是错误的。

我在终端中输入 httpd 后想通了。试试同样的方法也许它可以给你一些解决问题的提示。

➜  ~ httpd
AH00526: Syntax error on line 255 of /usr/local/etc/httpd/httpd.conf:
DocumentRoot '/Users/xx/Desktop/sites' is not a directory, or is not readable