2010-09-19 105 views
0

PHP腳本停止不顯示錯誤信息,如果我改變一個類的方法,該方法實現了一個intereface,例如簽名(哪種錯誤類型):PHP腳本停止,不錯誤消息

interface A 
{ 
    public function somefunction(); 
} 

class B implements A 
{ 
    public function somefunction(XY $xy); 
    { 
    ... 
    } 
} 

這當然是錯誤的,但是沒有顯示錯誤消息。

這種錯誤類型的名稱是什麼? (我已經搜索了很多,但顯然有錯誤的短語) 如何記錄或輸出此錯誤?

我使用PHP 5.3.1(與XAMPP的Windows 1.7.3)

(我使用Zend的調試與PHP < 5.3早些時候,在那些被錯誤回報顯示在Eclipse控制檯,但現在我使用XDebug。)

在此先感謝您的任何提示!

+1

你有沒有檢查過你的'error_log' – RobertPitt

回答

0

把下面的腳本的頂部:

error_reporting(E_ALL); 

應該報告錯誤。

3

放於文件的頂部,然後嘗試,

<?php 
ini_set('display_errors',1); 
error_reporting(E_ALL); 
?> 

如果仍沒有得到輸出,請檢查您的error_log。

1

議決

@ontrack謝謝你,你的提示指引我正確的方向:

我使用的是自動加載函數加載所需的類(使用spl_autoload_register())。我的自動加載器的實現抑制了所有的錯誤信息......我不知道,這會導致這種「更深層次」的錯誤不會出現。 這至少從我身邊的那種愚蠢的,但我更高興,我發現這個問題的原因,我已經學到了一些東西:-)

非常感謝所有的貢獻!再次抱歉,我無法再編輯我最初的問題。

@outis謝謝,請閱讀我的評論

+0

@outis感謝你提供這方面的信息!這是我分析的重要提示。我會嘗試更新到這個PHP版本(XDebug版本已經是2.1)。 (看來,我不能編輯我最初的問題,因爲我用一個訪客帳戶添加了它,現在我正在回答一個新的「真實」帳戶) – Baster

+0

因此,我們應該如何顯示錯誤消息? – Yalamber

+0

@askkirati:一般:你需要相應地設置你的php.ini。但是在這個問題上我遇到的問題是,我通過使用'@include somefile.php'而不是'include somefile.php'來在一個函數中抑制錯誤消息。 – Baster

0

東西必須是與你的配置。當我嘗試下PHP示例代碼5.3.2 + XDebug的2.1.0,PHP抱怨:

Fatal error: Declaration of B::somefunction() must be compatible with that of A::somefunction()

錯誤的類型是substitution違反,由於B不能被取代在所有情況下的A