我有一个在VirtualBox环境中运行的Ubuntu 12.04服务器。我在我的Windows系统中设置了一个共享文件夹,这很好,直到我从5.3.x将PHP更新到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之后发生的,这也升级了apache2。
如何将其他目录列入白名单并告诉apache从指定位置提供文件?
答案 0 :(得分:5)
首先,这真的属于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
中的sites-enabled
只是default
中sites-available
的符号链接,因此Apache实际上从中读取配置。例如,我所在的Ubuntu 12.04服务器上sites-available
的内容是:
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服务器当前正在管理的虚拟主机:
sudo apachectl -S
编辑:好像原始海报在000-default
中没有sites-enabled
。所以可以使用这样的新符号链接修复:
sudo ln -s /etc/apache2/sites-available/default /etc/apache2/sites-enabled/000-default
然后使用sudo service apache2 restart
重新启动Apache,然后重试。希望这是问题所在。请注意default
作为符号链接在000-default
中重命名sites-enabled
的原因是为了确保这是第一个加载的配置。