Apache 不会遵循 Symlink

Wei*_*upt 5 linux apache-2.2

我在我的开发机器上设置了一个 LAMP 服务器(Ubuntu 12.10)。它是一个用SSD改装的T60。

服务器库位于 /var/www 中。Apache 有以下配置:

DocumentRoot /var/www
<Directory />
  Options FollowSymLinks
  AllowOverride None
</Directory>
<Directory /var/www/>
  Options Indexes FollowSymLinks MultiViews SymLinksIfOwnerMatch
  AllowOverride all
  Order allow,deny
  allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)

我目前正在开发一个SilverStripe CMS 特色网站。服务器的文件夹是 /var/www/sfk/。框架和所有与 cms 相关的功能都在各自的文件夹中。唯一需要修改的文件夹是 /var/www/sfk/mysite 文件夹。因此,我想将 mysite 文件夹保留在我的主目录下,并将其符号链接到服务器文件夹中。所以这就是我所做的:

ln -s ~/sfk/mysite/ /var/www/sfk/
sudo chgrp www-data /var/www/sfk/mysite -R
Run Code Online (Sandbox Code Playgroud)

ls 告诉我以下内容:

/var/www/sfk (exerpt)

drwxr-xr-x  3 marvin www-data 4096 Nov 16 16:53 assets
drwxr-xr-x 12 marvin www-data 4096 Nov 16 16:53 cms
drwxr-xr-x 29 marvin www-data 4096 Nov 16 16:53 framework
-rw-r--r--  1 marvin www-data 2410 Nov 16 16:53 index.php
lrwxrwxrwx  1 marvin www-data   24 Nov 20 17:45 mysite -> /home/marvin/sfk/mysite/
-rw-rw-r--  1 marvin www-data  514 Nov 16 16:55 _ss_environment.php
drwxr-xr-x  4 marvin www-data 4096 Nov 16 16:53 themes
Run Code Online (Sandbox Code Playgroud)

ls /var/www/sfk/mysite/

drwxrwxr-x 6 marvin www-data 4096 Nov 16 00:15 code
drwxrwxr-x 2 marvin www-data 4096 Nov 16 11:51 _config
-rwxrwxr-x 1 marvin www-data 2685 Nov 16 15:39 _config.php
drwxrwxr-x 2 marvin www-data 4096 Nov 16 00:15 css
drwxrwxr-x 2 marvin www-data 4096 Nov 16 00:15 images
drwxrwxr-x 2 marvin www-data 4096 Nov 16 00:15 javascript
drwxrwxr-x 5 marvin www-data 4096 Nov 16 00:15 templates
Run Code Online (Sandbox Code Playgroud)

这实际上与我在台式机上的设置相同。我的问题是 mysite/ 文件夹无法识别。我很感激我得到的每一个建议。我很沮丧,因为我被这个问题困扰了好几个小时。

Zor*_*che 5

您确定该www-data帐户能够遍历 的每个目录组件/home/marvin/sfk/mysite/吗?所以www-data必须有访问homemarvinsfk,和mysite。您可能需要拥有o+x该路径的每个组件。当遵循符号链接时,遵循符号链接的用户必须能够实际到达目标文件夹/文件。

如果您不想授予www-data对文件夹的访问权限,那么您可能需要查看绑定安装。