我想我的 Apache 一定全都搞砸了。我不知道它是否曾经工作过。我刚刚升级到 Snow Leopard,第一步本教程是启动 apache 并通过打开检查它是否正常工作http://本地主机。它启动正常,但当我转到本地主机时出现 403 禁止错误。
我不知道从哪里开始弄清楚如何修复它,所以我想知道全新安装 Apache 是否可以解决问题。
你怎么认为?
更新:我在 中找到了错误日志/private/var/log/apache2/
。在其中一个日志中发现了这个。不确定它是什么意思:
[Tue Nov 10 17:53:08 2009] [notice] caught SIGTERM, shutting down
[Tue Nov 10 21:49:17 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
Warning: DocumentRoot [/usr/docs/dummy-host.example.com] does not exist
Warning: DocumentRoot [/usr/docs/dummy-host2.example.com] does not exist
httpd: Could not reliably determine the server's fully qualified domain name, using Andrews-Mac-Pro.local for ServerName
mod_bonjour: Skipping user 'andrew' - cannot read index file '/Users/andrew/Sites/index.html'.
[Tue Nov 10 21:49:19 2009] [notice] Digest: generating secret for digest authentication ...
[Tue Nov 10 21:49:19 2009] [notice] Digest: done
[Tue Nov 10 21:49:19 2009] [notice] Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8k DAV/2 PHP/5.3.0 configured -- resuming normal operations
更新:我还在dummy-host.example.com-error_log
文件中发现了一些东西。顺便说一句,我没有设置这些虚拟主机。这是默认配置吗?
[Tue Nov 10 21:59:57 2009] [error] [client ::1] client denied by server configuration: /usr/docs
更新:哇哦!我找到了包含虚拟主机定义的文件。它在 中/etc/apache2/extra/httpd-vhosts.conf
。它包含这两个虚拟虚拟主机设置。我添加了一个localhost
虚拟主机。不确定这是否有必要,但由于之前不起作用,所以决定还是这么做。删除旧虚拟主机、添加新的 localhost 虚拟主机并重新启动 apache 后,它似乎可以正常工作。所以我想每当我想添加虚拟主机时,我只需要将它们添加到这个文件中?或者是否有某个地方的 hosts 文件,就像在 Linux 上一样?
更新:是的,有一个/etc/hosts
文件需要更改。将虚拟主机名添加到该文件中。
答案1
如果您收到 403 错误,则可能意味着该目录不存在,或者该目录的权限不允许您看到它。
我的问题是默认虚拟主机设置指向不存在的目录。
因此你应该这样做:(假设你使用的是 Snow Leopard)
查找并打开您的虚拟主机配置文件。
pico /etc/apache2/extra/httpd-vhosts.conf
检查您的虚拟主机定义是否在其中,否则请创建它们
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot "/Users/yourusername/Sites/mysite" ServerName mysite.local ErrorLog "/private/var/log/apache2/mysite-error_log" CustomLog "/private/var/log/apache2/mysite-access_log" common </VirtualHost>
打开
/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 # VIRTUAL HOST START 127.0.0.1 localhost 127.0.0.1 mysite.local # VIRTUAL HOST STOP
现在重新启动 Apache,您就可以开始了!
sudo apachectl restart
答案2
它也被标记为警告,它实际上是错误日志中的关键行:
Warning: DocumentRoot [/usr/docs/dummy-host.example.com] does not exist
Apache 正在搜索一个目录,该目录将保存您与之通信时将解决的文件。显然,此目录不存在,因此 Apache 无法为您解决任何问题。创建目录并index.html
在其中放置一些文件,或编辑您的配置文件以将 Apache 指向另一个目录。