我在 XUbuntu 12.04 开发机器上,并且使用 安装了 LAMP 堆栈tasksel install lamp-server
。我一直试图在我的个人项目目录中设置虚拟主机,但没有成功。我查看了 apache 文档中的示例 vhost 配置 (在单个 IP 地址上运行多个基于名称的网站)。我尝试了各种教程和博客文章中的建议,但遇到了各种问题(超时、“它有效”页面而不是 index.php、403 禁止访问)。
我启用了 userdir 模块,并将自己添加到了 www-data 组。相关文件的权限和所有者:
/home/dan/Projects/phpinfo/www
: 775,归 dan:www-data 所有/home/dan/Projects/phpinfo/www/index.php
: 664,归 dan:www-data 所有
尽管任何人都可以读取该网站的网络根目录及其下的所有内容,但我无法以 www-data 用户身份(使用sudo -s www-data
)进入该网站。
这是我现在的配置。当我使用 curl 时,我得到了 403 Forbiddenhttp://phpinfo.local
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName phpinfo.local
DocumentRoot /home/dan/Projects/phpinfo/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/dan/Projects/phpinfo/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
Require all granted /home/dan/Projects/phpinfo/www
</Directory>
ErrorLog /home/dan/Projects/phpinfo/logs/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /home/dan/Projects/phpinfo/logs/access.log combined
</VirtualHost>
相关行/etc/hosts
:
127.0.0.1 phpinfo.local
如何在任意目录中设置虚拟主机,并允许 Apache 和我自己在 vhost web 根目录下创建和修改文件和目录?经过多次尝试和错误,我曾经在另一台机器上成功完成过一次,但这次我无法重复。
更新
除了 Shane 的解决方案之外,请确保在将自己添加到组后重新启动。此时,此设置按预期工作。我和 Apache 都对具有775
权限且由以下人员拥有的子目录具有写访问权限www-data:www-data
(不是dan:www-data
)。
答案1
用户www-data
还需要具有遍历父目录(位)的能力+x
- 我敢打赌,/home/dan/
世界不允许遍历它?