任何导致INTERNAL SERVER ERROR的.php文件

时间:2011-07-28 20:16:09

标签: php apache

突然,我服务器上的所有.php文件都会导致INTERNAL SERVER ERROR。

我不知道它是否相关,但它是在我更新yum时开始的。

即使是空白的.php文件也会导致错误。我已经移动了我的所有网站内容,只尝试了一个空的.php文件,但仍然会出现同样的错误。

也没有.htaccess文件。

我该怎么办? = /

(同一台服务器上的其他网站工作正常)

Apache和php日志似乎没有更新。 Apache的最后一次是从今天开始,但与此问题无关。 PHP的最后一个来自APRIL

更新

我刚发现每个域都有自己的Apache日志。

这是特定网站的内容

[Thu Jul 28 22:04:02 2011] [error] [client 173.245.56.24] Premature end of script headers: cgi_wrapper
[Thu Jul 28 22:04:02 2011] [error] [client 173.245.56.168] suexec policy violation: see suexec log for more details
[Thu Jul 28 22:04:02 2011] [error] [client 173.245.56.168] Premature end of script headers: cgi_wrapper
[Thu Jul 28 22:04:02 2011] [error] [client 103.22.200.144] suexec policy violation: see suexec log for more details
[Thu Jul 28 22:04:02 2011] [error] [client 103.22.200.144] Premature end of script headers: cgi_wrapper
[Thu Jul 28 22:04:02 2011] [error] [client 103.22.200.150] suexec policy violation: see suexec log for more details
[Thu Jul 28 22:04:02 2011] [error] [client 103.22.200.150] Premature end of script headers: cgi_wrapper
[Thu Jul 28 22:04:03 2011] [error] [client 173.245.56.168] suexec policy violation: see suexec log for more details
[Thu Jul 28 22:04:03 2011] [error] [client 173.245.56.168] Premature end of script headers: cgi_wrapper
[Thu Jul 28 22:04:04 2011] [error] [client 199.27.128.138] suexec policy violation: see suexec log for more details
[Thu Jul 28 22:04:04 2011] [error] [client 199.27.128.138] Premature end of script headers: cgi_wrapper
[Thu Jul 28 22:04:04 2011] [error] [client 103.22.200.246] suexec policy violation: see suexec log for more details
[Thu Jul 28 22:04:04 2011] [error] [client 103.22.200.246] Premature end of script headers: cgi_wrapper

3 个答案:

答案 0 :(得分:4)

我不确定,但有时它可能与文件的权限有关。在我使用的网络主机上,如果权限未设置为655,则会给出505; 777将给出500内部服务器错误。我的猜测是,在YUM的PHP发布更新中他们做了类似的事情,但这只是猜测。简而言之,检查文件权限,如果它们不是655,则尝试将它们更改为。

答案 1 :(得分:1)

尝试阅读日志。请记住,许多主机在超载时会抛出500内部服务器错误,即使php没有问题。当我或同一服务器中的其他人多收费时,它发生在我的共享主机帐户

如果等待服务器变得不那么繁忙或者你没有看到任何日志,那么你应该真正与你的托管支持人员交谈,这似乎与PHP本身无关,至少不在你身边。

答案 2 :(得分:0)

https://support.exabytes.com/kb/a3479/500-internal-server-error-information.aspx上找到:

错误的权限,可由组写入

错误的权限错误可能如下所示:

[Sun Jun 05 12:03:22 2012] [error] [client 66.249.72.82] SoftException in Application.cpp:601: Directory "/home/exampleuser/public_html" is writeable by group

在此实例中,该文件夹具有文件夹设置过高的权限。要更正此问题,需要从" 777"更改权限。到" 755"。

目录和文件夹应为755. cgi-bin文件夹中的可执行脚本必须为755.图像,媒体和HTML等文本文件应为644.

档案 - 644 CGI脚本 - 755 目录 - 755 您可以使用文件管理器修改权限,该文件管理器位于"文件" cPanel的类别,FTP客户端,或在SSH / Bash中使用chmod命令。

Bad .htaccess,无效的代码,命令或语法

.htaccess文件(" dot htaccess")中,您可能添加了措辞错误或冲突的行。解决此问题的最佳方法是注释掉.htaccess中的行。

您可以通过在开头添加#来注释.htaccess中的一行。在进行更改之前,最好保存任何文件的原始副本。

例如,如果.htaccess看起来像这样:

DirectoryIndex default.html
AddType application/x-httpd-php5 php

然后尝试这样的事情:

DirectoryIndex default.html
#AddType application/x-httpd-php5 php

以php_flag开头的断行和行是最常见的错误。如果您无法确定哪一行是问题,那么请注释掉每一行。

其他常见的.htaccess错误

了FollowSymLinks

错误可能如下所示:

[Sun Jun 05 12:07:10 2011] [alert] [client 66.249.72.82] /home1/examplec/public_html/.htaccess: Option FollowSymlinks not allowed here

在此示例中,错误很容易修复;在指定的文件中,使用allowed指令 - 在这种情况下使用" SymlinksIfOwnerMatches"而不是" FollowSymlinks",或完全删除该行。

语法未关闭

错误可能如下所示:

 [Sun Jun 05 12:11:38 2011] [alert] [client 66.249.72.82] /home1/examplec/public_html/.htaccess: /home1/examplec/public_html/.htaccess:3: <IfModule>ExampleRule/Module> was not closed.

同样,解决方案是简单地修复语法,或删除它。在这种情况下,关闭结尾&#34;&#34 ;;指令正确并将规则放在他们自己的行上以解决问题。

这些只是一些可能由坏.htaccess参数引起的常见示例。您遇到的情况可能会有所不同,但通常情况下,错误消息的描述性足以确定其中的错误,而无需进一步调查。

php.ini

配置不正确

ForceType指令

当您使用(或不具有)扩展名不同于该文件类型的正常扩展名的文件时,您可以在.htaccess文件中使用ForceType,以使服务器清楚如何处理该文件(或所有文件)文件夹)(这适用于没有phpsuexec的服务器)。

一个例子:当你有一个名为&#34; item&#34;的文件时(就像Nucleus用于FancyURL的那些)并希望它被服务器解析为php你在.htaccess文件中使用以下代码:

ForceType application/x-httpd-php

但是,因为我们的服务器使用phpsuexec,这将导致内部服务器错误。要解决此问题,您只需使用SetHandler而不是ForceType,因此.htaccess文件将变为:

SetHandler application/x-httpd-php

php_value

在没有phpsuexec的服务器上,可以使用.htaccess文件中的php_value语句来更改php的设置(实际上会覆盖php.ini中的设置)。在具有phpsuexec的服务器上,这也将导致服务器错误。要解决此问题,您可以使用php.ini文件,该文件放在与放置.htaccess文件的文件夹相同的文件夹中。在那个php.ini文件中,你可以改变所有的PHP值。您只需将要修改的值放在该文件中即可。例如,如果你想将short_open_tag设置为Off,你会使用short_open_tag吗? = .htaccess文件中的off。使用php.ini文件会导致:

[PHP]
short_open_tag = Off