我正在使用 Virtualbox 5.2.22 在 Windows 10 上运行 Ubuntu 18.10
让我解释一下我想要实现的目标。在 Windows 中,我有两个开发环境。我正在使用 WAMP 服务器进行开发。我使用 Dropbox 来同步我的两个开发环境。方法如下:我有一个目录d:\Dropbox\_www
,然后我的两个 Apache 都以完全相同的方式配置。在开发中,我使用SQLite,所以我对数据库没有任何问题。我一直以这种方式工作一年多,没有任何问题。
我唯一的问题是我使用我的家用计算机作为环境之一,并且它已经充满了游戏、其他程序等,所以我认为在使用 Linux 的干净 VM 上复制我的环境可能是一个好主意。
我创建了d:\dropbox\_www
一个共享文件夹,它安装在/media/sf__www
我对它的完全访问权限上,我可以使用 VS Code 来编辑文件等。
现在我配置了 LAMP 服务器,Apache 2、PHP 和 mySQL 运行良好,我做了一个小页面,/var/www/test
一切正常
我的问题是我无法将 Apache 的虚拟服务器配置为指向/media/sf__www
. 这就是我所做的:
在 /etc/hosts 我添加了:
laravel.com.devel 127.0.0.1
laravel.conf
我用/etc/apache2/sites-available
以下内容创建了一个:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /media/sf__www/lara/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName laravel.com.devel
</VirtualHost>
在apache2.conf
我有以下内容:
<Directory "/media/sf__www/lara/">
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
然后我激活了站点并重新启动了 Apache:
sudo a2ensite laravel.conf
service apache2 reload
现在,当我进入浏览器时,我得到的只是 403:
Forbidden
You don't have permission to access / on this server.
Apache/2.4.34 (Ubuntu) Server at laravel.com.devel Port 80
认为它可能与文件系统中的权限有关(我在 Ubuntu 中非常新手)我做了一个sudo chmod 777 lara -R
更改目录中的所有权限,但它仍然给了我 403。
那么,关于如何配置 Apache 以使用外部目录的任何想法/var/www/
?
编辑:部分输出ll /media/sf__www/lara
是:
drwxrwx--- 1 root vboxsf 4096 oct 23 17:51 ./
drwxrwx--- 1 root vboxsf 4096 dic 8 09:58 ../
drwxrwx--- 1 root vboxsf 4096 oct 26 21:05 app/
-rwxrwx--- 1 root vboxsf 1686 oct 22 18:44 artisan*
drwxrwx--- 1 root vboxsf 0 oct 21 12:08 bootstrap/
-rwxrwx--- 1 root vboxsf 1477 oct 22 18:44 composer.json*
-rwxrwx--- 1 root vboxsf 144373 oct 22 18:48 composer.lock*
看起来你不能 chmod/chown 这个目录
编辑:组的输出
luisferfranco@luisfer-vb:/media/sf__www/lara$ groups
luisferfranco adm cdrom sudo dip plugdev lpadmin sambashare vboxsf
编辑: 目录上 setfacl 的输出:
luisferfranco@luisfer-vb:/media/sf__www/lara$ sudo setfacl -d -R -m u:$USER:rwx,g:www-data:rwx,o:rx /media/sf__www/lara
[sudo] contraseña para luisferfranco:
setfacl: /media/sf__www/lara: La operación no está soportada
setfacl: /media/sf__www/lara/app: La operación no está soportada
setfacl: /media/sf__www/lara/app/Console: La operación no está soportada
setfacl: /media/sf__www/lara/app/Exceptions: La operación no está soportada
它对每个文件都说“不支持操作”。我在其他网站上阅读,这可能与分区有关
编辑:[已解决]
我要感谢 George Udosen ( https://askubuntu.com/users/459561/george-udosen user:459561),他在聊天中花了一个多小时,帮我解决了这个问题。他尝试了很多不同的方法,直到成功。基本上解决问题的方法是将一个用户添加到 vboxsf 组,如下所示:
sudo adduser www-data vboxsf
非常感谢,你从圣诞节那天花了太多时间来帮助一个完全陌生的人,你是一个很棒的人。
尝试让 apache 访问 Ubuntu 客户机上的 Windows 主机的共享文件夹是很棘手的,因为 Virtualbox 将共享文件夹与用户
root
和组一起挂载vboxsf
。在我们(OP 和我)尝试使用命令重新安装该位置之后,为了让它工作这不起作用,因此使用了一种解决方法,我们使用以下命令将 apache 用户添加
www-data
到组中vboxsf
之后,访客上的 apache 就能够访问该位置。
我自己是新手,但我可以给你一点提示来解决这种情况,我们通常有root用户拥有的目录结构(默认)。如果我们希望我们的普通用户能够修改我们的 web 目录中的文件,您可以通过这样做来更改所有权:
请确保此 Lara 目录为普通用户所有,如果不是,请尝试上述命令然后重新启动 Apache,它可能对您有用,然后您可以像往常一样将目录的模式更改为 755。让我知道它是否可以解决您的问题。