Php 为什么可以';我不能让Apache2从/var/www以外的目录为站点提供服务吗?
我有一个运行在VirtualBox环境中的Ubuntu12.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文件确实具有从站点可用目录加载*.conf文件的指令。不幸的是,它只是忽略了告诉它文档根在我的站点上的位置的指令。这是在PHP从5.3.x升级到5.5.12之后发生的,这也升级了apache2Php 为什么可以';我不能让Apache2从/var/www以外的目录为站点提供服务吗?,php,linux,apache,ubuntu,Php,Linux,Apache,Ubuntu,我有一个运行在VirtualBox环境中的Ubuntu12.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从指定的位置提供文件?首先,这确实属于。也就是说,你问: 如何列出其他目录并告诉apache提供文件 从指定的位置 Apache没有“白名单”这样的东西。它可以在您系统的任何位置提供内容。即使您有一套
DocumentRoot
,也可以始终使用别名。Apache是灵活的
因此,您似乎面临的是一个配置问题。没别的了。同样如此。只需找到配置文件并根据需要进行调整&一切都应该很好
也就是说,当您运行这个命令列出可用的站点时,您看到了什么:
ls -la /etc/apache2/sites-available
与启用了站点的此命令相比
:
ls -la /etc/apache2/sites-enabled
可用的站点的内容是真正的配置文件。启用的站点中的项目
只是指向可用站点中文件的符号链接
。所以当你这么说的时候:
默认值现在是000-default.conf
你可能弄错了。因为sites enabled中的000 default.conf
只是指向sites available中的default
的符号链接,Apache实际上从中读取配置。例如,我所在的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
然后在站点中启用
它是:
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默认值
。因此,可以使用如下新的符号链接进行修复:
sudo ln -s /etc/apache2/sites-available/default /etc/apache2/sites-enabled/000-default
然后使用sudo服务apache2重新启动Apache,然后重试。希望这就是问题所在。请注意,default
在启用了站点时被重命名为000 default
,因为符号链接是为了确保这是加载的第一个配置。首先,这确实属于on。也就是说,你问:
如何列出其他目录并告诉apache提供文件
从指定的位置
Apache没有“白名单”这样的东西。它可以在您系统的任何位置提供内容。即使您有一套DocumentRoot
,也可以始终使用别名。Apache是灵活的
因此,您似乎面临的是一个配置问题。没别的了。同样如此。只需找到配置文件并根据需要进行调整&一切都应该很好
也就是说,当您运行这个命令列出可用的站点时,您看到了什么:
ls -la /etc/apache2/sites-available
与启用了站点的此命令相比
:
ls -la /etc/apache2/sites-enabled
可用的站点的内容是真正的配置文件。启用的站点中的项目
只是指向可用站点中文件的符号链接
。所以当你这么说的时候:
默认值现在是000-default.conf
你可能弄错了。因为sites enabled中的000 default.conf
只是指向sites available中的default
的符号链接,Apache实际上从中读取配置。例如,我所在的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
然后在站点中启用
它是:
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默认值
。因此,可以使用如下新的符号链接进行修复:
sudo ln -s /etc/apache2/sites-available/default /etc/apache2/sites-enabled/000-default
然后使用sudo服务重新启动apache2