2017-02-20 85 views
0

我已经在Ubuntu 16上安装了Apache 2.4,所有的作品。Apache别名无法在.htaccess中工作

我有一个网站坐在localhost,这也很好。

我需要能够访问USB驱动器上的文件以在网站中使用。

我使用PHP访问USB驱动器并获取文件的信息,这工作正常,但是当我尝试在网页上显示图像时出现问题。

我使用.htaccess文件,并试图使用mod_alias中的文件夹添加的USB驱动器到网站上,这里是我的.htaccess文件中的内容

DirectoryIndex index.php 
    Alias "/USB" "/mnt/sdb1/images" 
    <Directory "mnt/sdb1/images"> 
     Options FollowSymLinks 
     AllowOverride None 
     Require all granted 
    </Directory> 
    AddType audio/mpeg .mp3 

所以我知道了。 htaccess文件正在工作,因为它加载我的index.php文件作为主文件,当我去LocalHost。

我知道USB驱动器的文件路径是正确的,因为PHP脚本访问它并收集图像文件以显示在页面上,所以PHP使用scandir来获取文件夹中的所有图像(/ mnt/sdb1/images),并正确回显到页面以显示图像,例如;

<img src="/USB/image1.jpg" /> 

但是图像没有加载到页面本身,我认为这是因为别名看起来没有工作。

请帮忙。

回答

0

一种可能性是您需要授予www数据访问USB文件。通常在Apache的目录,你的主人设置为一样的东西:

chown root:www-data * 
chmod 750 * (for directories) 
chmod 640 * (for files) 

但是,你可能无法做到这一点USB驱动器(对不起,从来没有处理USB),但如果它是一个特定的群体,你可以WWW的数据添加到该组:

sudo usermod -a -G <USBGroup> www-data 

因此,举例来说,我有我的虚拟机(/媒体/ sf_node),这是我猜的共享驱动器的工作原理很像一个USB驱动器。所以,当我运行以下命令:

ls -la /media/sf_node 

我看到:

drwxrwx--- 1 root vboxsf 4096 Jan 27 11:10 web 

这表明该目录的组vboxsf。然后我可以做一个:

usermod -a -G vboxsf www-data 
+0

感谢您的帮助。 我不能通过PHP访问驱动器的事实意味着我的权限很好? –

+0

不是。它是关于代码执行时PHP是谁,并且需要文件权限。当PHP在你的用户名下运行时,它具有你的权限,但是当它在apache下运行时,它是www-data – Katie

+0

再次感谢。我尝试了以下; sudo chown -R root:www-data/mnt/sdb1 然而,它说'操作不允许' –