2012-09-04 112 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