包含,需要语法错误文件

时间:2015-06-19 16:02:08

标签: php include syntax-error require

我想问一下我是否可以要求/包含一个有语法错误的文件,如果我不能,则require / include返回一个值,以便我知道所需/包含的文件有语法错误而且不能被要求/包含?

file.php有语法错误

include('file.php')
if (not file.php included because of syntax)
   this
else
   that

3 个答案:

答案 0 :(得分:3)

如果你真的想要这种功能。

您可以尝试使用nikics php parser查看是否可以成功解析文件。

$code = file_get_contents('yourFile.php');

$parser = new PhpParser\Parser(new PhpParser\Lexer\Emulative);

try {
    $stmts = $parser->parse($code);
    // $stmts is an array of statement nodes
    // file can be successfully included!
} catch (PhpParser\Error $e) {
    // cannot parse file!
    echo 'Parse Error: ', $e->getMessage();
}

答案 1 :(得分:0)

在PHP 7中,可以捕获解析错误,这可能是最强大,优雅的内置解决方案:

<?php

function safe_require_once(string $fname) {
    try {
        require_once($fname);
    } catch( Throwable $e ) {
        //will throw a warning, continuing execution...
        trigger_error("safe_require_once() error '$e'", E_USER_WARNING);
    }
}

safe_require_once("./test1.php"); //file with parse or runtime errors
echo "COMPLETED SUCCESSFULLY THO";

答案 2 :(得分:-1)

你可以使用这样的东西:

if((@include $filename) === false)
{
    // handle error
} else { //....}

@用于隐藏错误消息