4

升级到 High Sierra 后,我的本地网站访问失败,就像每次升级后一样。这一次我认为我是最重要的,因为我将所有更改都放入了 /other/overides.conf。它仍然没有工作。我终于能够通过删除 Listen 80 来修复它。此新代码随最新的 httpd.conf 一起提供

<IfDefine SERVER_APP_HAS_DEFAULT_PORTS>
    Listen 8080
</IfDefine>
<IfDefine !SERVER_APP_HAS_DEFAULT_PORTS>
    Listen 80
</IfDefine>

显然,这种变化与较新版本的 Apache 有关。更改的原因是什么,我是否正确修复了它?

4

1 回答 1

4

在以前的 macOS 版本中,您提到的部分是单行Listen 80,位于/etc/apache2/httpd.conf. 纯粹是为了在升级 macOS 时便于设置,这是放置您自己的Listen指令的正确位置。例如,每次升级时,我都会将该行替换为

  Listen 80
  Listen 81
  Listen 82

然后恢复我现有的httpd-vhosts.conf文件,在那里我尽可能多地保留我的自定义配置。

(你暗示你Listen在很多地方都有指令,我不知道为什么会这样。把它们都放在一个地方更常见,当然更容易,尤其是当你处理苹果的“土拨鼠”时Day' 配置文件的方法)

我在新表单上找不到任何文档,并且在 High Sierra 配置文件或launchdApache 调用中的其他任何地方都没有提到它。但它的作用非常清楚:它Listen根据是否设置了某个参数来选择两种替代配置之一。唯一可以想到的原因是允许 Apple 在两种不同的设置之间切换而无需修改http.conf文件。我猜它与某处的复选框有关,可能在服务器应用程序(我没有安装)中,或者它可能预期未来的一些选项。

无论如何,我的理由是:过去,我修改了 Apache 所做的而不是监听 80 端口,所以这是我现在应该修改的部分。因此,我将新的 High Sierra 更改httpd.conf为:

<IfDefine SERVER_APP_HAS_DEFAULT_PORTS>
    Listen 8080
</IfDefine>
<IfDefine !SERVER_APP_HAS_DEFAULT_PORTS>
    Listen 80
    Listen 81
    Listen 82
</IfDefine>

这似乎工作正常。大概,如果这个神秘的SERVER_APP_HAS_DEFAULT_PORTS参数在我的电脑上变成了真的,那么它的全部意义就很明显了。

于 2017-10-04T16:38:05.747 回答