更改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文件中做类似的事情?
经过大量的测试和研究,似乎并没有像这样的全局文件。最好的解决方法是在每个用户的骨架目录中放置一个文件。
我还没有真正理解你的环境,但错误信息似乎是从这个line
你需要检查suPHP的配置文件(通常/etc/suphp.conf),看看有什么min_uid的价值(默认情况下为100) 调整值以满足您的需求。
环境设置为500.使用用户ID为501的全局用户lxlabs,我们仍然会收到500错误。 – fanfavorite
我得到文件“/var/www/error/noindex.php”的目标UID(1060)和UID(501)之间的不匹配。我需要一种方式让500以上的所有用户访问这个文件。 – fanfavorite
我在谈论的环境一般不是变量 – 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的主要目的是分离具有不同文件所有者的应用程序。
我可以使用哪些用户作为全局用户?该文件正被许多不同的用户访问。 lxlabs是用户ID 501,用作我相信Kloxo的全球用户,但在这种情况下不起作用。 – fanfavorite
您是否检查过Apache的错误日志? apache用户(可能是_nobody_,因为你正在使用Redhat)可以读取'/ error/noindex.php'吗? – 2011-09-12 14:04:33
我检查了suPHP日志,并在上面的帖子中发布了消息。我试图将用户和组更改为lxlabs(普通kloxo用户),但这似乎也不起作用。 – fanfavorite
您是否有权访问/ etc/passwd以查明谁是UID 1060? –