httpd:无法可靠地确定服务器的完全限定域名

Tob*_*len 14 apache macos server-configuration web

我知道这个问题经过了很多研究,但这里的解决方案并没有解决它们.

让我们从一些背景信息开始:

OS X 10.8.4 Apache 2.2.22

问题:我在控制台中遇到此错误,Apache无法找到我的localhost,但确实启动了.奇怪的.

[Sat Aug 17 13:40:06 2013] [info] mod_ssl/2.2.22 compiled against Server: Apache/2.2.22, Library: OpenSSL/0.9.8r
httpd: Could not reliably determine the server's fully qualified domain name, using Specter.local for ServerName
Run Code Online (Sandbox Code Playgroud)

所以通常这会指向我的ServerName没有设置正确.它是:/我尝试过不同的变种,如Specter.local,localhost等

这是我的/private/etc/httpd.conf的副本,这与/private/etc/apache2/httpd.conf相同

# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName localhost
Run Code Online (Sandbox Code Playgroud)

我的主机文件设置如下:

127.0.0.1   localhost localhost.local
255.255.255.255 broadcasthost
127.0.0.1       themill.dev
127.0.0.1       phpmyadmin.dev
127.0.0.1       Specter.local
Run Code Online (Sandbox Code Playgroud)

在我的/private/etc/apache2/users/ta.conf中是以下内容

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80
# DEV: THEMILL SITE
<VirtualHost *:80>
  ServerAdmin test@dummy.com
  DocumentRoot "/Users/ta/Sites/themill/htdocs"
  ServerName themill.dev
  ServerAlias *.themill.dev
  ErrorLog "/Users/ta/Sites/themill/log/error_log"
  CustomLog "/Users/ta/Sites/themill/log/access_log" common
</VirtualHost>

# PHPMYADMIN
<VirtualHost *:80>
  ServerAdmin test@dummy.com
  DocumentRoot "/Users/ta/Sites/phpmyadmin"
  ServerName phpmyadmin.dev
  ServerAlias *.phpmyadmin.dev 
  ErrorLog "/Users/ta/Sites/phpmyadmin/log/error_log"
  CustomLog "/Users/ta/Sites/phpmyadmin/log/access_log" common
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

不确定还应该配置什么呢.它曾经工作,但发布10.7升级,它从来没有工作,现在,我正在努力解决它,它正在努力.

如果您需要更多信息,请告诉我.

ken*_*orb 13

httpd.conf文件中的以下行是正确的:

ServerName localhost
Run Code Online (Sandbox Code Playgroud)

问题是在macOS上它是错误的文件(不是/private/etc/httpd.conf).

要查找httpd.confApache配置文件的正确位置,请运行:

apachectl -t -D DUMP_INCLUDES
Run Code Online (Sandbox Code Playgroud)

然后仔细检查是否ServerName取消注释并设置为localhost.

  • 我的也救了,谢谢!只有使用该命令我才能找到带有错误的正确conf文件,默认日志很糟糕。 (2认同)

Spa*_*nky 8

忽略有关设置ServerNames的所有建议.恕我直言,这是一个红鲱鱼.Apache正在尝试使用标准系统组件来确定FQDN并找不到合适的东西.当然,你可以通过向Apache全局添加一个指令来破坏这个过程,但是这可以解决这个症状.当然,您应该在虚拟主机块中具有ServerName指令.

而是编辑您的主机文件,并确保您在那里列出了FQDN.我已经看到了关于特定127*行的语法的各种建议,但我认为只要列出了FQDN,无论订单是什么顺序都无关紧要:

127.0.0.1       localhost.localdomain   localhost       foo.example.com
Run Code Online (Sandbox Code Playgroud)

这对我有用,似乎比其他所有"为我工作!"更重要.在推荐你编辑httpd.conf等的帖子上投票.我希望这会有所帮助,而且我不会被投票.如果您不同意,请通过示例说明原因.谢谢.

http://wiki.apache.org/httpd/CouldNotDetermineServerName

一旦Apache确定了系统的FQDN,它就会读取您NameBasedHosts的特定ServerName指令.

  • "请确保你在那里列出了FQDN" - 我在这个问题的许多答案中已经看到了这一点.通过完全合格的域名,您的意思是我实际上可以使用foo.example.com或者这里的域必须是*实际*域吗?我不知道foo.example.com是否意味着'你在这里实际购买和拥有的域名',或者特别是'在这里放置任何域名,这些域名遵循FQDN模式,即www.mynonexistentdomain.com'.有人能提供清晰度吗? (4认同)