包括,需要语法错误文件
Include, Require a syntax error file
我想问我可以 require/include 一个有语法错误的文件吗?如果我不能, require/include returns 一个值,这样我就知道 required/included 文件有语法错误,不能 required/included ?
file.php 有语法错误
include('file.php')
if (not file.php included because of syntax)
this
else
that
你可以使用这样的东西:
if((@include $filename) === false)
{
// handle error
} else { //....}
@
用于隐藏错误信息
如果您真的想要这种功能。
您可以尝试使用 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();
}
在 PHP7 中,可以捕获解析错误,这可能是最健壮、优雅的内置解决方案:
<?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";
我想问我可以 require/include 一个有语法错误的文件吗?如果我不能, require/include returns 一个值,这样我就知道 required/included 文件有语法错误,不能 required/included ?
file.php 有语法错误
include('file.php')
if (not file.php included because of syntax)
this
else
that
你可以使用这样的东西:
if((@include $filename) === false)
{
// handle error
} else { //....}
@
用于隐藏错误信息
如果您真的想要这种功能。
您可以尝试使用 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();
}
在 PHP7 中,可以捕获解析错误,这可能是最健壮、优雅的内置解决方案:
<?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";