403在Apache上使用NTFS分区上的文档根禁止错误
我是Ubuntu的初学者,希望找到比WIndows更好的Web开发环境。 我正在尝试访问http://localhost
但它总是给我一个禁止的错误。 我分别安装了php,mysql和apache。 Files/web_files
也是我在windows中的web目录,当我在Windows上访问时是D:/Files/web_files
而在ubuntu上是media/Files/web_files
。 编辑位于etc/apache2/sites-available
的default
文件后,我也重新启动了apache我是否编辑了错误的文件? 请帮忙。
ServerAdmin webmaster@localhost DocumentRoot /media/Files/web_files Options FollowSymLinks AllowOverride None Options FollowSymLinks AllowOverride All order allow,deny allow from all ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined Alias /doc/ "/usr/share/doc/" Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128
更新如果我使用var/www
而不是魔法。
DocumentRoot /var/www Options FollowSymLinks AllowOverride None Options FollowSymLinks AllowOverride All order allow,deny allow from all
这是mount
命令的输出
/dev/loop0 on / type ext4 (rw,errors=remount-ro) proc on /proc type proc (rw,noexec,nosuid,nodev) none on /sys type sysfs (rw,noexec,nosuid,nodev) none on /sys/fs/fuse/connections type fusectl (rw) none on /sys/kernel/debug type debugfs (rw) none on /sys/kernel/security type securityfs (rw) none on /dev type devtmpfs (rw,mode=0755) none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620) none on /dev/shm type tmpfs (rw,nosuid,nodev) none on /var/run type tmpfs (rw,nosuid,mode=0755) none on /var/lock type tmpfs (rw,noexec,nosuid,nodev) none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) /dev/sda2 on /host type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,blksize=4096) binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev) gvfs-fuse-daemon on /home/wern/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=wern) /dev/sr0 on /media/2022_21092011 type udf (ro,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,iocharset=utf8,umask=0077) /dev/sda3 on /media/Files type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions) /dev/sda1 on /media/System Rese
这是ls - laR/media
的输出
ls: cannot access -: No such file or directory ls: cannot access laR: No such file or directory /media: 2022_21092011 Files System Reserved
所以我想知道这是文件系统或其权限中的问题。 但我不认为它与权限有关,因为我可以完美地编辑media/Files/web_files
的文件,而不必以超级用户身份运行它。 感谢那些到目前为止花时间帮助我的人。
您的Windows驱动器D似乎安装在/media/Files
在这种情况下,您的文件实际上位于/media/Files/Files/web_files
。 请尝试使用该路径编辑默认站点可用文件,使用sudo service apache2 restart
启动Apache,看看它是否有效。
另外,正如Marty在评论中指出的那样,看起来Nautilus使用奇数权限安装NTFS分区,因此除了你自己(当然还有root用户)之外,没有任何用户可以读取或写入它。
要解决此问题,请关闭所有Nautilus窗口,停止apache2,打开终端并执行以下操作:
sudo umount / dev / sda3 mkdir / media / DriveD sudo ntfs-3g / dev / sda3 / media / DriveD
现在启动apache2
并查看它是否有效。 如果确实如此,最好将mount安装在/etc/fstab
就像Marty所说的那样。
如果您不想编辑/ etc / fstab文件,请执行此操作
-
打开终端并输入
udisks --mount /dev/sda3 --mount-options umask=022
我想,你的分区已被标记为“文件”。 在这种情况下,它将被挂载到/media/Files
目录。 然后你可以在其中执行php文件。 但如果它没有标记为“文件”,我建议使用disk-utility
。 或者,如果您不想标记,请将您的etc/apache2/sites-available/default
文件更改为实际安装点。
注意:如果您没有带分区的标签,它将安装在/media/xxxx....
文件夹中,其中xxxx …是分区的UUID。
归功于这个回答者
在apache运行时你的驱动器是否正在安装? 我不知道自动安装是否足够,但如果出现问题,您可能需要显式安装驱动器是/etc/fstab
。 我很确定这种自动安装只能按需完成; 直到你在Nautilus中打开它才安装,然后它就会安装。
我通过在Nautilus中打开安装了NTFS分区进行了测试,并且没有为所有者和所有者组以外的任何人设置权限,因此这很可能是问题的根源。 您需要设置安装权限,以便每个人都具有该分区的读取和执行( rx
)权限。 你知道如何在`/ etc / fstab’中安装驱动器或任何其他方法。 这里有一些详细的说明。
基础是您需要创建一个目录来安装分区,传统上作为/mnt/
的子目录,而不是/media/
; /media/
传统上用于自动安装的设备,例如在Nautilus中打开未安装的设备或CD / USB驱动器时。
创建目录
您创建的目录应该具有您想要的权限和所有者; 我通常将所有者设置为自己,对宇宙的其余部分具有只读权限(drwxr-xr-x)。 此目录应为空,但不一定是。 但是当安装了某些文件时,任何文件都将无法访问。 要为此目录创建和设置权限(将LOGIN_NAME更改为您的登录名):
cd /mnt sudo mkdir Files sudo chown LOGIN_NAME:LOGIN_NAME Files sudo chmod 755 Files
编辑fstab
然后,在/etc/fstab
文件中创建一个条目,将分区挂载到此目录。 这通常非常简单,但对于NTFS,设置所有者和权限需要一些额外的信息。 我用于NTFS的这一行(全部在一行):
UUID=0000000000000000 /mnt/Files ntfs-3g auto,users,uid=LOGIN_NAME,gid=LOGIN_NAME,utf8,dmask=002,fmask=113 0 0
注意 :将正确的UUID替换为0000000000000000; 通过在终端中输入命令行sudo blkid
获得UUID。 另外,请将您的登录名替换为LOGIN_NAME。
编辑Apache配置文件
然后,在/etc/apache2/sites-available/default
文件中,将最初为/var/www/
的DocumentRoot更改为/mnt/Files/web-files
。 此外,对您的网站目录进行相同的更改。 这假设在/mnt/Files/
安装的分区根目录中有一个目录/web-files/
/mnt/Files/
。
另外,确保文档根目录( .../web-files
)中有HTML / PHP文件? 它需要像index.html或index.php。 您是否将/var/www/
的文件复制到此目录?
尝试将Apache根目录保存在linux原生分区( /var/www/html
)并安装,即:
mount -o bind /media/Files/web_files /var/www/html/web_files
请记住,文件夹web_files
必须存在于文件夹/var/www/html/
并且它具有足够的属性来读取它。
需要在两个apache配置文件中更改DocumentRoot:
/etc/apache2/sites-available/default /etc/apache2/apache2.conf
以下是我为克服同样错误所采取的措施。 我的情况是,我想在使用Ubuntu进行编码时指向我的Windows Dropbox项目文件夹。
NTFS分区的设置
首先,您需要能够通过Ubuntu访问您的NTFS分区。 如果还没有,请执行以下步骤。
$ sudo apt-get install ntfs-3g
找到NTFS分区的名称。 例:
$ sudo fdisk -l | grep NTFS
获取NTFS分区的UUID。
$ sudo blkid
/ dev / sda1:LABEL =“windows”UUID =“4ED2A451B2A23F59”TYPE =“ntfs”
在/ etc / fstab中配置分区(以防万一)进行备份。
$ sudo cp /etc/fstab /etc/fstab.bak $ sudo vim /etc/fstab
我创建了如下(基于UUID。以下选项设置读取,写入,执行权限和uid = 1000设置您在操作系统启动期间作为NTFS分区的用户。这还将确保Apache用户可以访问您的虚拟主机方向(这就解决了我的问题)。
/dev/disk/by-uuid/4ED2A451B2A23F59 /media/windows ntfs-3g defaults,permissions,users,uid=1000,utf8 0 0
请注意,如果不存在,您可能需要创建/ media / windows目录。
$ cd /media $ sudo mkdir windows $ sudo chown sagun:users windows
重新启动计算机并确认您的NTFS驱动器自动挂载,并启用了读取,写入和执行权限。
在Apache中配置虚拟主机的设置
创建目录以放置日志文件(如果需要):
$ sudo mkdir /var/log/apache2/projects.dev
在/ etc / apache2 / sites-available目录中创建一个新的配置文件。 例:
$ sudo vim /etc/apache2/sites-available/projects.dev
设置与此类似的配置并保存文件:
ServerAdmin webmaster@projects.dev ServerName projects.dev ServerAlias projects DocumentRoot /media/windows/Users/sagun/Dropbox/projects Options FollowSymLinks AuthType None AllowOverride None Order deny,allow Deny from all Options Indexes FollowSymLinks MultiViews AuthType None AllowOverride None Order allow,deny allow from all ErrorLog ${APACHE_LOG_DIR}/projects.dev/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/projects.dev/access.log combined
接下来,编辑/ etc / hosts文件。
$ sudo vim /etc/hosts
添加以下行并保存:
127.0.0.1 projects.dev
使用以下命令激活主机:
$ sudo a2ensite projects.dev
重启Apache
$ sudo service apache2 restart
最后,我能够从浏览器访问http://projects.dev ,我的所有代码都驻留在Windows和Ubuntu的NTFS分区中。 我希望有人觉得这很有用。 干杯!
我个人没试过NTFS,但这救了我:
你唯一需要做的是:
Require all granted
这将解决问题
这里的post在我的博客中详细解释了一切。 它可以在NTFS上运行