在PHP中,由于分号省略而显示HTTP 500错误是否正常?

在PHP中,由于分号省略而显示HTTP 500错误是否正常?,php,Php,给定以下代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title&

给定以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Index PHP</title>
</head>
<body>
<?php
class Student {

}


$classes = get_declared_classes();
echo "Classes:" . implode(',', $classes) . "<br/>";

$class_names = ["Product", "Student", "student"];
foreach($class_names as $class_name) {
  if(class_exists($class_name)) {
    echo "{$class_name} is a declared class. <br />";
  } else {
    echo "{$class_name} is not a declared class <br/> ";
  }
  }
?>
</body>
</html>

索引PHP
如果省略任何分号,PHP将发出
HTTP错误500
,甚至不会尝试打开该文件。这似乎与我所知道的以前的语言(JS、Ruby)背道而驰,这些语言至少会显示网页,然后在必要时抛出错误


我的问题是,如果省略了分号,那么产生的HTTP错误500是该语言设计的结果,还是我的PHP配置(使用MAMP)的结果

在PHP中几乎总是需要分号。忽略它们会导致解析错误,这将导致服务器返回500错误。所以要回答您的问题,这是语言设计的结果,而不是您的配置。

在PHP中几乎总是需要分号。忽略它们会导致解析错误,这将导致服务器返回500错误。因此,要回答您的问题,这是语言设计的结果,而不是您的配置。

a
500
错误,因为浏览器显示的任何其他错误代码(或更一般地说:状态代码)都是HTTP的构造

web服务器调用您的PHP脚本。如果失败,例如,由于语法错误,如在您的案例中,
500
错误是web服务器通知浏览器该失败的方式


服务器发送的消息以及错误代码是通用的,没有任何用途。向每个用户打印堆栈跟踪可能会泄露有关系统环境的敏感信息。有一些框架(例如)提供了实用程序,可以在需要时帮助提供有意义的错误,但也可以使用简单的
try
/
catch
块围绕所有逻辑实现这一点。

a
500
错误,以及浏览器显示的任何其他错误代码(或更一般地说:状态代码),是HTTP的一种构造

web服务器调用您的PHP脚本。如果失败,例如,由于语法错误,如在您的案例中,
500
错误是web服务器通知浏览器该失败的方式


服务器发送的消息以及错误代码是通用的,没有任何用途。向每个用户打印堆栈跟踪可能会泄露有关系统环境的敏感信息。有一些框架(例如)提供了实用程序,可以在需要时帮助提供有意义的错误,但这也可以通过使用一个简单的
try
/
catch
块来实现。

您无法理解http状态的概念。实际上,php确实打开了文件并试图解释它。但由于它包含语法错误(缺少分号),因此无法编译代码。这就是为什么必须提出这样一个“服务器内部错误”。引擎还应该做什么?引擎可以打开网页,将错误放在网页上,引用哪一行有错误(通过控制台使用JS执行此操作)。如果出现HTTP 500错误,则无法看到错误的来源。但是谢谢你的解释。关于你不能看到错误的来源。。。这不是php语言的错误,但是您没有阅读文档或任何介绍,很抱歉。看一看http服务器错误日志文件,在那里您可以清楚地看到指出的伪行…您应该做的一件事是在开发机器上默认打开所有错误<代码>ini设置(“显示错误”、“打开”),
错误报告(E\u ALL)
等。不幸的是,许多自以为是的“专家”建议使用错误可视化来调试代码问题,这实际上是一件可怕的事情。如果不监视http服务器日志文件,就无法在web环境中开发。这就像在一个狭窄的山洞里飞行,双眼被蒙住……你无法理解http状态的概念。实际上,php确实打开了文件并试图解释它。但由于它包含语法错误(缺少分号),因此无法编译代码。这就是为什么必须提出这样一个“服务器内部错误”。引擎还应该做什么?引擎可以打开网页,将错误放在网页上,引用哪一行有错误(通过控制台使用JS执行此操作)。如果出现HTTP 500错误,则无法看到错误的来源。但是谢谢你的解释。关于你不能看到错误的来源。。。这不是php语言的错误,但是您没有阅读文档或任何介绍,很抱歉。看一看http服务器错误日志文件,在那里您可以清楚地看到指出的伪行…您应该做的一件事是在开发机器上默认打开所有错误<代码>ini设置(“显示错误”、“打开”),
错误报告(E\u ALL)
等。不幸的是,许多自以为是的“专家”建议使用错误可视化来调试代码问题,这实际上是一件可怕的事情。如果不监视http服务器日志文件,就无法在web环境中开发。那就像是在一个狭窄的山洞里飞行,眼睛被蒙着。。。