代码之家  ›  专栏  ›  技术社区  ›  Silver Light

所有可能的PHP错误列表

php
  •  20
  • Silver Light  · 技术社区  · 15 年前

    有时,在用PHP编码时,我们会遇到如下语法错误:

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

    我想知道,是否有PHP解释器可以输出的所有可能错误的列表。我搜索过php.net,但找不到这样的东西。我需要这份清单是为了学术目的。

    5 回复  |  直到 11 年前
        1
  •  10
  •   johannes    15 年前

    不,没有好办法。即使建议的grep for zend_error()也是无用的。问题中显示的错误主要是由Bison解析器生成器生成的,而PHP只是从中获取错误。操作系统报告的错误也会发生类似的情况(如打开文件时出错)。由于错误取决于运行的操作系统和编译时使用的版本,因此PHP开发人员不能真正为这些错误生成一个好的列表。

    Zend_error()和php_error_docref()的grepping唯一能显示的是对可能的错误类型的概述,但到目前为止并不是所有的错误消息。

        2
  •  6
  •   Marin Todorov    15 年前

    我不知道是否存在可能的PHP错误的全面列表, 但是关于解析器错误,您应该检查PHP解析器令牌列表。

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

    手册上写着:

    PHP语言的各个部分在内部由以下类型表示: php输出标识符,比如 这是一个分析错误,比如“parse” 错误:意外的t_sr,应为“,” 或第10行script.php中的“;”。 你应该知道什么 手段。对于所有不知道的人 那,这是一张桌子 标识符、PHP语法和引用 到适当的地方 手动。

        3
  •  2
  •   user187291    15 年前

    我不知道这样的列表,但是你可以下载或签出PHP源代码,然后做一些类似的事情

     find . -name "*.c" | xargs grep "zend_error"
    
        4
  •  2
  •   Bradley    13 年前

    如果要查找所有可能错误类型的列表,这将有助于: http://www.php.net/manual/en/errorfunc.constants.php

        5
  •  0
  •   user187291    13 年前

    这在最新的PHP源代码(包括副本)上为我提供了1346次点击。这可能是一个很好的方法,但是由于@johannes列出的原因,这个列表还远远不够完整。

    另一方面,要定义一个特定的 类型 不管怎么说,解析错误,正如我想象的那样,它们是由解析器在运行时编译的,并且不在源代码的任何地方列出。

    你能详细说明一下你需要这个做什么吗?也许你可以定义一个错误的“子类”,它已经足够满足你的需要了。