4

问候专家和大师,我正在寻找有关 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 中。

4

3 回答 3

14

由于某种原因,在查看错误时,suphp 出现了很多。根据此链接

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

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

于 2011-11-21T07:44:18.720 回答
1

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

<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>
于 2011-11-21T07:38:40.940 回答
0

谢谢大家的帮助,我终于到了。看来升级到 Ubuntu 10.04 开启了 suPHP。它最终成为一件好事,因为我遇到错误的原因归结为我的 htdocs 中的文件管理变得草率。

为了解决我的问题,我必须做几件事:

首先,我在 /etc/apache2/sites-available/[site-name] 中打开了 suphp 错误消息。这给了我真正的错误,它告诉我我的某些页面的权限错误。然后我将 www 中的所有文件夹权限设置为 755,将文件设置为 644。我还必须将 suphp.conf 中的 min_uid 和 min_gid 文件降低到 33。

于 2011-11-24T05:46:22.977 回答