在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
块围绕所有逻辑实现这一点。a500
错误,以及浏览器显示的任何其他错误代码(或更一般地说:状态代码),是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环境中开发。那就像是在一个狭窄的山洞里飞行,眼睛被蒙着。。。