更改Apache的默认页面为PHP

问题描述:

我正在寻找更改apaches默认页面,当没有索引并获得500错误。我的服务器是Linux的红帽使用Kloxo客户建立和/etc/httpd/conf.d/welcome.conf我试图改变:更改Apache的默认页面为PHP

<LocationMatch "^/+$"> 
    Options -Indexes 
    ErrorDocument 403 /error/noindex.html 
</LocationMatch> 

<LocationMatch "^/+$"> 
    Options -Indexes 
    ErrorDocument 403 /error/noindex.php 
</LocationMatch> 

在这之后的httpd重新启动它给出500错误。我假设它与PHP权限有关,因为文件是以root用户身份上传的,并且用户是特定于某个帐户的。

noindex.html文件工作正常,并设置为root。

我知道另一种方法是使用骨架目录,但我不想走那条路线。

有没有人有任何想法我会做到这一点?

谢谢。

编辑:

错误我在suPHP得到: UID脚本 “/var/www/error/noindex.php” 比min_uid

小如果我改变为777,我得到的500错误页面,其中仅记录此消息: 文件“/var/www/error/noindex.php”是由他人

编辑2可写:

使文件400或660和用户ID 501 (lxlabs),我现在得到错误:

文件的目标UID(1060)和UID(501)之间的不匹配“/var/www/error/noindex.php”

我相信lxlabs应该是一个普通用户,但可能没有权限到那个目录。我不确定如何定位/home/kloxo/httpd/error/noindex.php,因为welcome.conf文件似乎开始于/ var/www目录。

编辑3:

这也可能有帮助。我能够在虚拟主机声明中设置suPHP细节。像:

<Virtualhost 123.456.78.90:8888> 
SSLEngine On 
SSLCertificateFile /home/kloxo/httpd/ssl/eth0___localhost.crt 
SSLCertificateKeyFile /home/kloxo/httpd/ssl/eth0___localhost.key 
SSLCACertificatefile /home/kloxo/httpd/ssl/eth0___localhost.ca 

DocumentRoot /home/kloxo/httpd/webmail/ 
<Ifmodule mod_suphp.c> 
SuPhp_UserGroup lxlabs lxlabs 
</Ifmodule> 
</Virtualhost> 

也许我可以在welcome.conf文件中做类似的事情?

+1

您是否检查过Apache的错误日志? apache用户(可能是_nobody_,因为你正在使用Redhat)可以读取'/ error/noindex.php'吗? – 2011-09-12 14:04:33

+0

我检查了suPHP日志,并在上面的帖子中发布了消息。我试图将用户和组更改为lxlabs(普通kloxo用户),但这似乎也不起作用。 – fanfavorite

+0

您是否有权访问/ etc/passwd以查明谁是UID 1060? –

经过大量的测试和研究,似乎并没有像这样的全局文件。最好的解决方法是在每个用户的骨架目录中放置一个文件。

我还没有真正理解你的环境,但错误信息似乎是从这个line

你需要检查suPHP的配置文件(通常/etc/suphp.conf),看看有什么min_uid的价值(默认情况下为100) 调整值以满足您的需求。

+0

环境设置为500.使用用户ID为501的全局用户lxlabs,我们仍然会收到500错误。 – fanfavorite

+0

我得到文件“/var/www/error/noindex.php”的目标UID(1060)和UID(501)之间的不匹配。我需要一种方式让500以上的所有用户访问这个文件。 – fanfavorite

+0

我在谈论的环境一般不是变量 – Sorin

解决方案是更改脚本的所有者和权限。 用户必须是普通用户。权限必须为660(rw为用户和组)或400(r仅限用户)。解释如下。

您正在使用suPHP,它是一个Apache模块,通过以受限制的权限运行它们来尝试保护PHP脚本。当请求脚本时,suPHP在执行脚本之前切换到脚本的所有者。

出于明显的安全原因,suPHP禁止以root用户身份运行脚本。因此,由root拥有的PHP脚本无法通过Apache访问。这是什么脚本的UID小于min_uid的意思。 suPHP确实有点更通用:它禁止所有特殊用户。 Linux为特殊用户保留第一个用户标识符。普通用户的ID大于500或1000(取决于发行版),而根通常具有ID 0.

suPHP仍然出于安全原因拒绝运行任何用户可以修改的脚本。这是消息的含义文件可由其他人写入。这种行为可以通过配置参数allow_file_others_writeable进行切换,但使用具有不安全配置的面向安全性的模块没有什么意义。毕竟,suPHP的主要目的是分离具有不同文件所有者的应用程序。

+0

我可以使用哪些用户作为全局用户?该文件正被许多不同的用户访问。 lxlabs是用户ID 501,用作我相信Kloxo的全球用户,但在这种情况下不起作用。 – fanfavorite