将Apache的默认页面更改为PHP

时间:2011-08-26 21:48:16

标签: linux apache redhat

我希望在没有索引并获得500错误时更改apach默认页面。我的服务器是Linux Red Hat,使用Kloxo和/etc/httpd/conf.d/welcome.conf设置客户端我试图改变:

<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中遇到错误: 脚本“/var/www/error/noindex.php”的UID小于min_uid

如果我将权限更改为777,则会出现500错误页面,日志中只显示此消息: 文件“/var/www/error/noindex.php”可由其他人编写

编辑2:

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

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

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

编辑3:

这也可能有所帮助。我能够在Virtualhost声明中设置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文件中做类似的事情?

3 个答案:

答案 0 :(得分:0)

我还没有真正了解您的环境,但错误消息似乎来自此line

你需要检查suPHP的配置文件(通常是/etc/suphp.conf),看看min_uid的值是多少(默认值为100) 调整值以满足您的需求。

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

经过大量的测试和研究后,似乎没有可能拥有这样的全局文件。最好的解决方法是将文件放在每个用户的skeleton目录中。