我有一个名为functions.php的文件。

该文件包括所有其他功能文件,例如:

include_once("user_functions.php");
include_once("foo_functions.php");

我想捕捉错误,当我在其中一个文件中插入代码时,不会将错误提供给整个系统。

例如,如果foo_functions.php中存在解析器错误,它将仅不将其包含在functions.php中。

那可能吗?

最佳答案

解析器错误是致命错误,因此您无法对其进行catch编码。 See this question and answer for more details

如果可以运行exec(),可以执行的操作是调用php -l thefilename.php并检查结果。 See the manual for information on how this works。但是,这里有一些问题:

  • 这是非常危险的,因为您正在将信息传递给命令行。您绝对必须非常仔细地过滤任何用户输入,否则您将为用户提供对系统的广泛访问。
  • exec()通常应被禁用,因为不正确使用它会带来极高的安全风险。
  • 确实没有充分的理由要包含尚未验证语法错误的文件。如果这是用于插件之类的东西,那么我理解您的理由。但是,如果是代码,您可以控制,则应在将其投入生产之前进行验证。
  • 关于php - 使用include时捕获PHP分析器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21431773/

    10-09 00:54
    查看更多