-2
$reset_Array=(); // I forgot to put the keyword "array"

正确的方法应该是

$rest_Array= array(); 

为什么Apache当我尝试执行错误的代码时会崩溃。

内部发生了什么?

4

2 回答 2

2

我认为 Apache 不会崩溃。发生的情况是您的 PHP 执行中止,导致您看到500 Internal server error. 这是因为语法

$reset_Array=();

在 PHP 中无效。PHP 试图解析这一行并遇到错误。它返回此错误并中止执行。尝试以下操作:将以下内容放入新文件test.php中:

<?php

$reset_Array=();

?>

并使用带有-l参数的命令行解释器执行此操作(lint - 语法检查):

$ php -l test.php

您将收到以下错误:

$ php -l publish/test.php 
PHP Parse error:  parse error in test.php on line 3
Errors parsing test.php

一旦 PHP 遇到这个错误,它就无法继续执行脚本,因为它无法解析它。因此,当您尝试在 Apache 下执行它时会收到错误消息。

PS 上面的命令是从 unix/linux shell 显示的。如果您在 Windows 下运行,那么您的提示可能类似于C:\Documents >而不是$.

于 2012-09-04T06:50:21.337 回答
1

阿帕奇没有崩溃。只是没有显示错误。

您可以查看文件中的错误,该error_log文件与您的 php 脚本位于同一目录中。

您可以做的是在您的php.ini文件中查找未注释的行error_reporting = foo。将其更改fooE_ALL.

然后它应该显示错误,而不仅仅是所谓的“崩溃”。

于 2012-09-04T06:57:01.707 回答