我是 Ubuntu 的新手,希望找到一个比 Windows 更好的 Web 开发环境。我尝试访问,http://localhost
但总是出现禁止错误。我分别安装了 php、mysql 和 apache。Files/web_files
也是我在 Windows 中的 Web 目录,当我在 Windows 上访问时是D:/Files/web_files
,在 ubuntu 上是。我还在编辑位于中的文件media/Files/web_files
后重新启动了 apache我编辑的文件是否错误?请帮忙。default
etc/apache2/sites-available
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /media/Files/web_files
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /media/Files/web_files/>
Options FollowSymLinks
AllowOverride All
order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
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/"
<Directory "/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
</Directory>
</VirtualHost>
更新
如果我使用var/www
它,它就像魔法一样有效。
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options FollowSymLinks
AllowOverride All
order allow,deny
allow from all
</Directory>
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
不必以超级用户身份运行它。感谢那些迄今为止花时间帮助我的人。
答案1
您的 Windows 驱动器 D 似乎安装在/media/Files
在这种情况下,您的文件实际上位于/media/Files/Files/web_files
。请尝试编辑默认使用该路径复制 sites-available 文件,然后重新启动 Apachesudo service apache2 restart
并查看它是否有效。
此外,正如 Marty 在评论中指出的那样,Nautilus 似乎以奇怪的权限挂载了 NTFS 分区,因此除了您自己(当然还有 root)之外,没有其他用户能够读或从中写入/写入到其中。
为了解决这个问题,关闭所有 Nautilus 窗口,停止 apache2,打开终端并执行以下操作:
sudo 卸载 /dev/sda3 mkdir /media/驱动器D sudo ntfs-3g /dev/sda3 /media/DriveD
现在开始apache2
,看看它是否有效。如果有效,最好/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。
功劳归于此回答者
答案2
您的驱动器在 apache 运行时是否已挂载?我不知道自动挂载是否足够,但如果出现问题,您可能需要明确挂载驱动器/etc/fstab
。我很确定这种自动挂载仅在需要时进行;它不会挂载,直到您在 Nautilus 中打开它,然后才会挂载。
我使用 Nautilus 打开挂载的 NTFS 分区进行了测试,它没有为所有者和所有者组以外的任何人设置权限,因此这很可能是问题的根源。您需要设置挂载权限,以便每个人都r-x
对该分区具有读取和执行 () 权限。您知道如何在“/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;UUID 是通过sudo blkid
在终端中输入命令行获得的。另外,将您的登录名替换为 LOGIN_NAME。
编辑 Apache 配置文件
然后,在文件中/etc/apache2/sites-available/default
,将原来的 DocumentRoot 更改为/var/www/
。/mnt/Files/web-files
此外,对您的网站目录进行相同的更改。这假设/web-files/
在 中安装的分区的根目录中有一个目录/mnt/Files/
。
另外,请确保文档根目录 ( .../web-files
) 中有一个 HTML/PHP 文件?它应该是类似 index.html 或 index.php 的文件。您是否将文件复制/var/www/
到此目录中?
答案3
尝试将 Apache 根目录保留在 Linux 本机分区 ( /var/www/html
) 上并进行挂载,即:
mount -o bind /media/Files/web_files /var/www/html/web_files
请记住,文件夹web_files
必须存在于文件夹下/var/www/html/
,并且具有足够的属性来读取它。
答案4
对于不想处理挂载和重新挂载分区的人来说,只需确保在 apache.conf 和 000-default.conf 中有正确的挂载路径,然后编辑 /etc/apache2/envvars
修改 www-data
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
到您的用户名
export APACHE_RUN_USER=youruser
export APACHE_RUN_GROUP=youruser
重新启动apache,完成。