如何修复apache错误“不在配置的目录”;在Ubuntu中


How do fix apache error "not within configured docroot" under Ubuntu

尊敬的专家和大师,我正在寻找一些帮助与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"不在配置的目录中。

由于某些原因,在查看错误时,suphp出现了很多次。根据这个链接:

不要误以为这与Apche虚拟主机文档的根目录有关,这实际上是supp配置文件中的另一个设置。包括包含RoundCube脚本的路径修复了这个问题。例如:docroot =/var/www:/usr/share/roundcube:/var/lib/roundcube: ${回家}/public_html

您需要编辑您的/etc/suphp/suphp.conf文件,并将docroot更改为适当的内容

看起来您错过了每个站点名称的虚拟主机配置:

<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。