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

Yab*_*ley 2 apache macos 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"
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

apachectl configtest返回:

Syntax OK
Run Code Online (Sandbox Code Playgroud)

我已经尝试运行端口扫描127.0.0.1并且http端口80 没有显示.这和被拒绝的联系让我觉得这是问题所在,但我不知道为什么.OSX防火墙已关闭.我已经尝试过这里发布的解决方案,但它没有解决它.

我的/ 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
...
Run Code Online (Sandbox Code Playgroud)

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

hem*_*nto 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  
Run Code Online (Sandbox Code Playgroud)


Yab*_*ley 2

经过几天的尝试调试这个问题后,我通过用升级到 osx elcapitan 时创建的旧文件覆盖 httpd.conf 文件解决了这个问题。

sudo cp httpd.conf~elcapitan httpd.conf
Run Code Online (Sandbox Code Playgroud)

执行此操作后,可以再次访问本地主机。我不知道我以前的 httpd.conf 文件出了什么问题。我曾多次寻找问题,但从未发现任何问题。我什至比较了这两个文件,尝试看看问题出在哪里,但没有发现为什么它会以这种方式失败。

一旦本地主机再次响应,我就完成了启用我需要的模块并重新配置我的虚拟主机的过程。

同样,我不知道其他 httpd.conf 文件出了什么问题。也许它以某种方式被损坏了。不管怎样,它默默地失败了,apachectl configtest没有报告任何问题。

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