2012-09-04 70 views
-2
$reset_Array=(); // I forgot to put the keyword "array" 

正确的方法应该是为什么Apache在执行下面的PHP代码时崩溃?

$rest_Array= array(); 

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

内部发生了什么?

+1

您正在使用哪个版本的PHP(5.2.x?)以及哪个平台(Linux?Windows?)? – Femi

+1

我发现很难相信Apache崩溃。很可能,PHP由于错误而中止执行。你应该得到'500内部服务器错误'。 –

回答

2

我不认为Apache崩溃。发生什么是您的PHP执行中止,导致您看到500 Internal server error。这是由于以下事实:语法

$reset_Array=(); 

在PHP中无效。 PHP试图解析这一行并遇到错误。它返回这个错误并且执行中止。请尝试以下操作:将在一个新的文件test.php如下:

<?php 

$reset_Array=(); 

?> 

并与一个命令行解释器-l参数(皮棉 - 语法检查)执行此:

$ 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遇到此错误,它不能共同ntinue执行脚本,因为它无法解析它。因此,当您尝试在Apache下执行它时收到错误。

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

+0

感谢您的意见。彻底研究了我发现的代码是导致崩溃的其他内容。是的,“error_reporting”帮助我调试实际问题。 –

2

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

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

你可以做的是看看你的php.ini文件中的未注释行error_reporting = foo。将foo更改为E_ALL

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

+0

请注意,这_doesn't_显示解析错误 - 我需要在开始执行脚本之前完全解析文件。由于它是一个解析错误,它永远不会像执行一样。 [见这里](http://stackoverflow.com/a/10667432/156755)。要启用显示的分析错误,您需要在您的ini文件中执行此操作 – Basic