我在 Ubuntu 13.10 上安装了 Apache 2.4.6,并将一些 html 文件放在/var/www/
默认基本文件夹中。然后我需要将这些 html 文件共享到同步的 Dropbox 文件夹,因此我将文件www
夹移到我的 Dropbox 文件夹中,并将其替换为同名的符号链接。请注意,Dropbox 中的 www 文件夹具有读取权限。现在,当我刷新我的网站时,Chrome 会读取
您无权访问此服务器上的 /
为什么无法将www
文件夹移动到我同步的 Dropbox 文件夹(在用符号链接替换原始文件夹后)?我不认为 Apache 会注意到 www 文件夹的链接和实际文件夹之间的差异www
。我该如何让 Apache 遵循 www 符号链接并正确显示?这是 Dropbox 问题还是 Apache 问题?
另外,我的/etc/apache2/apache2.conf
文件原来是这么说的:
<Directory />
Option FollowSymLinks
AllowOverride None
Require all denied
</Directory>
并将其更改为...
<Directory />
Option +FollowSymLinks
AllowOverride None
Require all denied
</Directory>
(添加加号)并没有什么区别。
哦,apache2 -k restart 抛出了以下错误:
“配置变量 ${APACHE_LOG_DIR} 未定义”
和:
“参数文件中的 Mutex 目录无效:${APACHE_LOCK_DIR}”
重启和停止/启动均无效。此外,将文件夹和子文件夹的权限更改为 Other:read_only 也没有任何区别(尽管 Dropbox 文件夹最初没有授予此类权限)
还有其他想法吗?
答案1
您必须确保路径上的所有目录都已/path/to/your/folder/www
设置x
位,无论是针对others
还是针对www-data
用户。
答案2
默认情况下,Apache 不会跟踪符号链接。要启用此行为,您需要将以下内容添加到<Directory>
vhost 配置部分:
Options +FollowSymLinks
尽管如此,我强烈建议不要使用 Dropbox。还有很多其他更安全的选项可以轻松完成文件部署。
另一件需要验证的事情是,apache 用户是否有权读取 Web 根目录中的文件。如果您的 Dropbox 文件夹位于您的主目录中,则 apache 用户最有可能才不是有读取权限。(另一个不使用 Dropbox 的原因)