Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 将Apache的默认页面更改为PHP_Linux_Apache_Redhat - Fatal编程技术网

Linux 将Apache的默认页面更改为PHP

Linux 将Apache的默认页面更改为PHP,linux,apache,redhat,Linux,Apache,Redhat,我希望更改apaches的默认页面,以便在没有索引且出现500错误时使用。我的服务器是Linux Red Hat,客户端使用Kloxo和/etc/httpd/conf.d/welcome.conf进行设置,我正在尝试更改: <LocationMatch "^/+$"> Options -Indexes ErrorDocument 403 /error/noindex.html </LocationMatch> 到 在httpd重启后,会出现500错误。我

我希望更改apaches的默认页面,以便在没有索引且出现500错误时使用。我的服务器是Linux Red Hat,客户端使用Kloxo和/etc/httpd/conf.d/welcome.conf进行设置,我正在尝试更改:

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

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

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

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

有人知道我将如何做到这一点吗

谢谢

编辑:

我在SUPPP中遇到的错误: script/var/www/error/noindex.php的UID小于min\u UID

如果我将权限更改为777,我将获得500错误页面,日志中只有此消息: 文件/var/www/error/noindex.php可由其他人写入

编辑2:

将文件设为400或660,用户ID为501 LXLAB,我现在得到错误:

文件/var/www/error/noindex.php的目标UID 1060和UID 501不匹配

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

编辑3:

这也可能有帮助。我能够在Virtualhost声明中设置SUPPP详细信息。比如:

<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文件中执行类似的操作?

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

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

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


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

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

您是否检查了Apache的错误日志?apache用户可能没有人,因为您使用的是Redhat,所以没有读取/error/noindex.php的权限吗?我检查了suPHP日志,并在上面的帖子中发布了这些消息。我试图将用户和组更改为普通kloxo用户,但这似乎也不起作用。您是否有权访问/etc/passwd以了解UID 1060是谁?我知道UID 1060是谁,我希望500以上的所有用户都能访问此文件。我可以使用哪个用户作为全局用户?许多不同的用户正在访问此文件。lxlabs是用户ID 501,我相信它被用作Kloxo的全局用户,但在本例中不起作用。
<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>