HTTP 500 / 配置错误? [复制]

Posted

技术标签:

【中文标题】HTTP 500 / 配置错误? [复制]【英文标题】:HTTP 500 / Configuration Error? [duplicate] 【发布时间】:2017-01-24 21:21:53 【问题描述】:

我正在运行全新安装的 Linux Mint 17.3,并按照this guide 设置 Apache、php (5.5.9)、mysql 和 PHPMyAdmin。我唯一做的另一件事是启用 mod_rewrite。

我遇到的问题是在执行应该返回警告或致命错误的 PHP 代码时,它反而返回 HTTP 错误 500。例如,以下代码可以正常工作(如预期):

<?php
// convert fahrenheit to celsius
$temp = 80;
$temp -= 32;
$temp *= 5/9;
echo $temp;

虽然我希望以下代码返回 PHP 警告/错误,但它反而返回完全无用的 HTTP 错误 500:

<?php
// convert fahrenheit to celsius
$temp = 80;
echo ($temp -= 32) *= 5/9;

发生了什么,我该如何解决这个问题?

【问题讨论】:

您可能会发现您收到警告/错误,但由于您将错误通知设置为不显示在屏幕上,因此没有显示。检查您的 apache / 错误日志,或查看如何显示 PHP 警告和错误。 @Lee 即使更改了 /etc/php5/apache2/php.inierror_reporting = E_ALL(显示所有错误、警告和通知),它仍然给我一个 HTTP 500 错误。 它总是会给出 500 错误,因为这是正在发生的错误。你检查过你的日志吗? 这可能有帮助吗? ***.com/questions/2687730/… 如果你在你的php脚本中ini_set了display_errors和logs_errors,解析错误之前发生过,所以没有设置。尝试将设置放入 apache 配置中。 【参考方案1】:

你能检查你的 apache 错误日志吗,我相信他们会准确地告诉你 500 错误是什么。

您还可以检查 apache config/s 中的错误报告,以确保错误设置为正确报告

【讨论】:

从技术上讲,这应该是评论而不是答案。 @Lee:由于回购,他无法发表评论..【参考方案2】:

当然,正如 cmets 所说,您将/应该在日志中发现错误,指出您的代码中 *= 部分的解析错误。

原因如下

代码中的($temp -= 32) 部分没有问题,因为值80-32 被设置回$temp 变量。 但是,*= 5/9 没有设置回变量,而是设置为 ($temp -= 32) 的结果,这只是一个标量值,这就是你有错误的原因。

只需使用不带= 符号的echo 结果:

回声 ($temp -= 32) * 5/9;

【讨论】:

我不是在问如何修复 PHP 错误。 @mistermartin 我的错。然后检查我的 cmets。

以上是关于HTTP 500 / 配置错误? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

当http错误500.19或隐藏配置源时如何重定向到错误页面

HTTP 错误 500.19 和错误代码:配置 IIS 服务器时出现 0x80070021

访问网站出现500错误 HTTP ERROR 500

配置 iis 服务器时出错(HTTP 错误 500.19)

如何配置 apache 以在每个 HTTP 错误 500 上发送电子邮件

HTTP 500.19-内部服务器错误。没有任何配置错误