为什么在执行以下PHP代码时Apache会崩溃?

时间:2012-09-04 06:34:41

标签: php arrays apache

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

正确的方法应该是

$rest_Array= array(); 

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

内部发生了什么?

2 个答案:

答案 0 :(得分: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下执行它时会收到错误。

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

答案 1 :(得分:2)

Apache没有崩溃。这只是没有显示错误。

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

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

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