我希望在没有索引并获得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文件中做类似的事情?
答案 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目录中。