php文件的500内部服务器错误不是html [重复]

Posted

技术标签:

【中文标题】php文件的500内部服务器错误不是html [重复]【英文标题】:500 Internal Server Error for php file not for html [duplicate] 【发布时间】:2013-07-15 15:05:02 【问题描述】:

我的网站只有 4-5 个静态页面。 index.htmlindex.php 都在那里。 index.html 工作正常。如果我更改为 index.php,它会给出500 Internal Server Error。我不知道我的错误在哪里?

注意: 如果我使用带有php_flag display_errors 1.htaccess 文件,

显示的是Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

如果我使用带有empty.htaccess 文件,

显示的是Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

如果我给../contact-us.php,它会正确显示。

谢谢...

【问题讨论】:

您是在地址栏中输入 /index.php 还是实际上将目录索引更改为 index.php?也请把index.php文件中的代码贴出来! 检查您的日志(/var/log/apache/error.log/var/log/httpd/error.log,最有可能);但我猜你的 PHP 文件有错误。 可能你的php代码有一些错误 500 内部服务器错误是一般性的,真正的原因隐藏在您的服务器日志中。 我认为这与文件权限有关,您可以检查其他PHP文件权限并与您重命名的那个进行比较... 【参考方案1】:

如果您的 php 代码有致命错误但错误显示已关闭,则会显示 500 Internal Server Error。你可以试试这个来查看错误本身而不是 500 错误页面:

在您的 php 文件中:

ini_set('display_errors', 1);

在 .htaccess 文件中:

php_flag display_errors 1

【讨论】:

@KarSho 看看这个:***.com/questions/11179706/… 你拯救了我的一天 只想指出 .htaccess 文件存在于您的项目根目录中。如果不是,只需创建一个新文件并重命名其扩展名 在某些情况下,这些设置还不够。例如,我正在使用 PHP 快速 CGI,但我遇到了内部服务器错误,但不知道它来自哪里。一切似乎都很好,错误被设置为显示,但我认为它来自执行超时。所以,我必须在 apache 中启用 FcgidIOTimeout,在 PHP 中启用 max_execution_time。如果用户使用 PHP fast CGI,还要检查 apache config 中的 fcgi 设置。 httpd.apache.org/mod_fcgid/mod/mod_fcgid.html【参考方案2】:

PHP 文件的权限必须设置为 644。任何包含 PHP 文件和 PHP 访问权限(例如上传文件)的文件夹都必须将权限设置为 755。PHP 在处理任何文件或文件夹时会运行 500 错误权限设置为 777!

【讨论】:

如何更改这些权限? 将所有文件权限改为755,主文件夹改为755 帮我解决问题 是的,这是 500 错误。现在没了。这个答案需要更多的支持! 对我有什么诀窍:将 index.php 的组和所有者都设置为 Apache 用户,我的组没有人! @JCMcRae 更改权限很简单:chmod 644 .php【参考方案3】:

我遇到了这个问题,因为我试图连接到 mysql 但我没有所需的包。由于@Amadan 检查错误日志的评论,我想通了。就我而言,我遇到了错误:Call to undefined function mysql_connect()

如果您的 PHP 文件有任何代码可以连接到 My-SQL 数据库,那么您可能需要先安装 php5-mysql。我收到此错误是因为我没有安装它。我所有的文件权限都很好。在 Ubuntu 中,您可以通过以下命令安装它:

sudo apt-get install php5-mysql

【讨论】:

【参考方案4】:

它正在为我修复它的.htaccess 文件中更改行尾(从 Windows CRLF 到 Unix LF)。

【讨论】:

【参考方案5】:

我知道这个问题很老,但是我在尝试使用 .htaccess 文件进行重写时在 Windows 8.1 上遇到了这个问题。我的解决方案很简单,我忘记在httpd.conf中修改以下行

#LoadModule rewrite_module modules/mod_rewrite.so

LoadModule rewrite_module modules/mod_rewrite.so

重新启动 apache 监视器,现在一切正常。只是将其发布为答案,因为将来有人可能会通过简单的修复遇到相同的问题。

祝你好运!

【讨论】:

【参考方案6】:

Google 在这里指导我,但它没有解决我的问题,这是一个非常普遍的问题,并且有多种原因,所以我在这里发布我的问题和解决方案以供参考,以备以后有人阅读。

另一个可能导致 500 错误的原因是 header(...) 函数中的语法错误,例如:

header($_SERVER['SERVER_PROTOCOL'] . '200 OK');

注意服务器协议和状态码之间应该有空格,所以应该是:

header($_SERVER['SERVER_PROTOCOL'] . ' 200 OK');

因此,如果您的代码中有 http 标头调用,我建议您检查它。

【讨论】:

以上是关于php文件的500内部服务器错误不是html [重复]的主要内容,如果未能解决你的问题,请参考以下文章

上传文件时出现 HTTP 500 内部服务器错误 [重复]

nginx 和 PHP GeoIP 模块的内部错误 500

HTTP 500内部服务器错误怎么解决。

我希望 codeigniter 回显 php 错误而不是 500 内部错误

301 重写/重定向规则导致 500 内部服务器错误

关于Apache php 报500错误