2010-03-01 60 views
19

有時候,而在PHP編碼,我們得到解析或語法錯誤像:列出所有可能的PHP錯誤

Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in /var/www/example/index.php on line 4 

我想知道,如果所有可能的錯誤,PHP解釋器的列表可以輸出。我搜索了php.net,但找不到這樣的東西。我需要這個名單用於學術目的。

+0

該錯誤可能只是因爲你忘了關你的前行。 – Layke 2010-03-01 10:43:21

+3

@Laykes:我認爲你必須再次閱讀這個問題;) – 2010-03-01 10:45:22

+0

是的,我故意這樣做,以得到一個錯誤的例子。 我更感興趣的是獲取可能的錯誤消息的實際列表,而不是解決它們 - 這是另一個問題:) – 2010-03-01 10:46:37

回答

9

不,沒有好方法。即使是建議的zend_Error()的grep也沒用。你在問題中顯示的錯誤大多是由bison解析器生成器生成的,而PHP只是從那裏生成的。操作系統報告的錯誤會發生類似的情況(如打開文件時出現錯誤)。 PHP開發人員無法真正爲這些列表生成良好的列表,因爲錯誤取決於正在運行的操作系統和編譯時使用的版本。

對於zend_error()和php_Error_docref()的唯一選擇可以顯示您是可能的錯誤種類的一般概述,但是不是所有的錯誤消息。

2

我不知道這樣的列表,但你可以隨時下載或檢出PHP源,這樣做

find . -name "*.c" | xargs grep "zend_error" 
+0

我考慮過這個。如果沒有關於錯誤的文檔,我將不得不這樣做。 – 2010-03-01 10:49:06

5

我不知道是否存在可能的PHP錯誤的完整列表, 而是分析器錯誤,你應該籤PHP解析器的列表令牌

http://php.net/manual/en/tokens.php

這裏就是手冊上說:

Various parts of the PHP language are represented internally by types like T_SR. PHP outputs identifiers like this one in parse errors, like "Parse error: unexpected T_SR, expecting ',' or ';' in script.php on line 10." You're supposed to know what T_SR means. For everybody who doesn't know that, here is a table with those identifiers, PHP-syntax and references to the appropriate places in the manual.

+0

謝謝這個清單對我來說也很有用! – 2010-03-01 10:48:17

+0

-1這很好理解,但它與錯誤消息有什麼關係? – 2010-03-01 10:48:55

+0

@Pekka:這個鏈接爲你提供了按名稱標記的列表,所以你可以看到代碼中的什麼標記調用了一個分析器錯誤,因此你可以解決你的分析錯誤,請閱讀http頁面頂部的簡短介紹://php.net/manual/en/tokens。php – 2010-03-01 10:51:14

0

這給了我最新的PHP源碼(包括重複)1346次點擊。這可能是一個好的途徑,但是由於@johannes提出的原因,名單遠遠沒有完成。另一方面,定義一個特定的類型解析錯誤無論如何都是非常困難的,正如我想象的那樣,它們在運行時由解析器編譯,並且不在源碼的任何位置列出。

你能詳細說明你需要什麼嗎?也許你可以定義一個已經足夠滿足你需要的錯誤的「子類」。

相關問題