我有一个在VirtualBox环境中运行的Ubuntu 12.04服务器。我在Windows系统上设置了一个共享文件夹,并且在我将PHP从5.3.x更新到5.5.12之前,它一直运行良好。我使用了新的php源,因为apt-get似乎没有让我升级到5.3.x以上。在此过程中,它还升级了apache2。我最初忽略的一个区别是,vhost配置文件不再是默认文件或mysite。现在默认为000-default.conf。并且apache2.conf仅设置为加载带有以.conf结尾的配置文件的站点。
问题不是我遇到了任何禁止的错误,而是apache忽略了任何指令,告诉它在/ var / www位置以外的地方使用文档根目录。我与VirtualBox的共享目录是/ media / sf_sandbox /-这是Ubuntu目录。我禁用了默认站点000-default.conf并启用了另外两个站点。现在,sandbox.dev使用var / www目录中的文件,而不是共享目录中的文件。它忽略sandbox.conf文件中的指令。
我读到某个地方,默认情况下,Apache仅会提供/ var / www目录中的文件,而且我可能必须将其他目录列入白名单。它没有说怎么做。apache2.conf文件确实具有从sites-available目录中加载* .conf文件的指令。不幸的是,它只是忽略了告诉其根目录在我的站点上的指令。将PHP从5.3.x升级到5.5.12后也发生了这种情况,PHP也从apache2升级了。
如何将其他目录列入白名单并告诉apache从指定位置提供文件?
首先,这确实属于Server Fault。就是说,你问这个:
如何将其他目录列入白名单并告诉apache从指定位置提供文件?
没有Apache的“白名单”之类的东西。它可以从系统上的任何位置提供内容。即使您有一套,DocumentRoot
也可以随时使用Alias
。Apache是灵活的。
因此,您似乎要面对的是配置问题。而已。没什么。只要找到配置文件并根据需要进行调整,一切都应该很好。
意思是,当您运行此命令清单时,您看到什么sites-available
:
ls -la /etc/apache2/sites-available
与以下命令对比sites-enabled
:
ls -la /etc/apache2/sites-enabled
的内容sites-available
是实际的配置文件。中的项目sites-enabled
只是指向中文件的符号链接sites-available
。所以当你这样说:
现在默认为000-default.conf。
您可能会感到困惑。因为000-default.conf
insites-enabled
只是一个指向其中的符号链接default
,sites-available
所以Apache实际上是从中读取配置的。例如,sites-available
我所在的Ubuntu 12.04服务器上的内容是:
ls -la /etc/apache2/sites-available
-rw-r--r-- 1 root root 913 Apr 15 16:15 default
-rw-r--r-- 1 root root 7469 Feb 14 2012 default-ssl
然后sites-enabled
是:
ls -la /etc/apache2/sites-enabled
lrwxrwxrwx 1 root root 26 Jan 11 2013 000-default -> ../sites-available/default
请注意,基本上000-default
只是一个符号链接。../sites-available/default
/etc/apache2/sites-available/default
过去,您需要提供更多详细信息或查看配置的位置。您甚至可以尝试运行此命令来查看您的活动Apache服务器当前正在管理哪些虚拟主机:
须藤apachectl
编辑:好像原来的海报没有000-default
在sites-enabled
。这样可以通过新的符号链接来解决,如下所示:
sudo ln -s /etc/apache2/sites-available/default /etc/apache2/sites-enabled/000-default
然后使用a重新启动Apache,sudo service apache2 restart
然后重试。希望这是问题所在。并注意,将其作为符号链接default
进入000-default
时,其原因是要重命名,sites-enabled
以确保这是加载的第一个配置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句