如何在 Ubuntu 下修复 apache 错误“不在配置的 docroot 中”
Posted
技术标签:
【中文标题】如何在 Ubuntu 下修复 apache 错误“不在配置的 docroot 中”【英文标题】:How do fix apache error "not within configured docroot" under Ubuntu 【发布时间】:2012-01-02 17:56:23 【问题描述】:问候专家和大师,我正在寻求有关 apache php 配置问题的帮助。
一段时间以来,我一直在 ubuntu 服务器上使用 apache2 设置运行多个网站,在我的 etc/apache2/conf.d/virtual.conf 文件中使用 NameVirtualHost * 行没有问题。我最近将服务器版本更新为最新的 lts 版本,我现在无法运行 php 文件。
我正在为位置“/home/www/[site-name]/htdocs”运行我的所有站点,并且我已经在 /etc/apache2/sites-available 中设置并启用了我的所有站点。我还禁用了默认站点。
对于每个站点文件,我都指定了以下内容:
# Indexes + Directory Root.
# DirectoryIndex index.html index.htm index.php
DocumentRoot /home/www/[site-name]/htdocs/
# CGI Directory
ScriptAlias /cgi-bin/ /home/www/[site-name]/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>
# Logfiles
ErrorLog /home/www/[site-name]/logs/error.log
CustomLog /home/www/[site-name]/logs/access.log combined
我重新启动 apache 并在我的服务器上输入 php 测试页面的 url,我遇到了“内部服务器错误”。当我检查错误日志时,我得到:
脚本“/home/www/[site-name]/htdocs/test.php”解析为“/home/www/[site-name]/htdocs/test.php”不在配置的 docroot 中。
【问题讨论】:
你运行的是 suPHP 还是 PHP?这个page 解释了如何修复这些 suPHP 错误。 只是标准的 php5,因此我认为这不是我的答案 两个建议,在阅读下面的条目后。 #1) 卸载 suPHP #2) 在this example for Ubuntu 11.04 之后安装 PHP。 (假设你在 11.04) 【参考方案1】:由于某种原因,在查看错误时,suphp 出现了很多。根据this link:
不要误以为这与 Apche 虚拟主机文档根目录有关,这实际上是 suphp 配置文件中的另一个设置。包括包含 RoundCube 脚本的路径修复了这一问题。例如: docroot=/var/www:/usr/share/roundcube:/var/lib/roundcube:$HOME/public_html
您需要编辑您的/etc/suphp/suphp.conf
文件并将docroot
更改为适当的值。
【讨论】:
我还看到了很多与此错误相关的 suphp 帖子,我不知道这与我的问题有什么关系,但为了尝试一切,我尝试在suphp.conf文件,重启apache,问题依旧 我将我的项目保存在/data/web/projects
下,例如/data/web/projects/sample-project
,所以我将/data/web/projects
添加到 suphp.conf 中的 docroot 变量中,一切都按需要工作。谢谢@Mike【参考方案2】:
您似乎错过了每个站点名称的虚拟主机配置:
<VirtualHost IP:80>
ServerName yourdomainname
ServerAlias www.yourdomainname
DocumentRoot /home/www/[site-name]/htdocs/
ScriptAlias /cgi-bin/ /home/www/[site-name]/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>
ErrorLog /home/www/[site-name]/logs/yourdomainname.ua-error.log
CustomLog /home/www/[site-name]/logs/yourdomainname-access.log combined
</VirtualHost>
<Directory "/home/www/[site-name]/htdocs/">
Options FollowSymLinks
AllowOverride None
Order allow,deny
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
【讨论】:
目前我的虚拟主机配置定义为 目前我的配置和您的示例之间的唯一区别是虚拟主机在每个文件中定义为感谢大家的帮助,我终于到了那里。看来升级到 Ubuntu 10.04 开启了 suPHP。它最终成为一件好事,因为我收到错误的原因归结为我的 htdocs 中的文件管理变得草率。
为了解决我的问题,我必须做几件事:
首先我在 /etc/apache2/sites-available/[site-name] 中打开了 suphp 错误消息。这给了我真正的错误,它告诉我我的某些页面的权限错误。然后我将 www 中的所有文件夹权限设置为 755,将文件设置为 644。我还必须将 suphp.conf 中的 min_uid 和 min_gid 文件降低到 33。
【讨论】:
以上是关于如何在 Ubuntu 下修复 apache 错误“不在配置的 docroot 中”的主要内容,如果未能解决你的问题,请参考以下文章