Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php求值函数_Php - Fatal编程技术网

php求值函数

php求值函数,php,Php,如何知道eval()在web服务器中被禁用或启用。了解这一点的php代码是什么?如果在服务器上被禁用,是否有任何php代码可以启用它?php中没有内置任何允许禁用eval的功能(与您可以禁用的其他功能不同) 但是,您可以为PHP安装一个名为Suhosin的安全路径,该路径允许您禁用eval,并向PHP添加其他安全特性 PHP中没有内置任何可以禁用eval的功能(与其他可以禁用的功能不同) 但是,您可以为PHP安装一个名为Suhosin的安全路径,该路径允许您禁用eval,并向PHP添加其他安全特

如何知道eval()在web服务器中被禁用或启用。了解这一点的php代码是什么?如果在服务器上被禁用,是否有任何php代码可以启用它?

php中没有内置任何允许禁用eval的功能(与您可以禁用的其他功能不同)

但是,您可以为PHP安装一个名为Suhosin的安全路径,该路径允许您禁用eval,并向PHP添加其他安全特性


PHP中没有内置任何可以禁用eval的功能(与其他可以禁用的功能不同)

但是,您可以为PHP安装一个名为Suhosin的安全路径,该路径允许您禁用eval,并向PHP添加其他安全特性

您应该能够确定
eval()
是否存在:

编辑

实际上,
eval()。然而,这应该是可行的:

<?php

$isevalfunctionavailable = false;

$evalcheck = "\$isevalfunctionavailable = true;";

eval($evalcheck);

if ($isevalfunctionavailable === true) {
    echo "\$isevalfunctionavailable is true.\n";
    echo var_dump($isevalfunctionavailable);
}

?>

您应该能够确定
eval()
是否存在:

编辑

实际上,
eval()。然而,这应该是可行的:

<?php

$isevalfunctionavailable = false;

$evalcheck = "\$isevalfunctionavailable = true;";

eval($evalcheck);

if ($isevalfunctionavailable === true) {
    echo "\$isevalfunctionavailable is true.\n";
    echo var_dump($isevalfunctionavailable);
}

?>


好的,正如前面所说,
eval
不太可能被禁用。但为了以防万一,有三种变通方法:

$eval = create_function("", "$code");
$eval();
file_put_contents($tmp=tempnam("/tmp", "EVAL"), "$code");
include($tmp);
甚至只是:

assert_options(ASSERT_ACTIVE, 1);   
assert_options(ASSERT_QUIET_EVAL, 1);
assert("$code");
以及文件系统解决方案:

$eval = create_function("", "$code");
$eval();
file_put_contents($tmp=tempnam("/tmp", "EVAL"), "$code");
include($tmp);

所有的工作都相当于一次直接评估。

好的,正如前面所说,
eval
不太可能被禁用。但为了以防万一,有三种变通方法:

$eval = create_function("", "$code");
$eval();
file_put_contents($tmp=tempnam("/tmp", "EVAL"), "$code");
include($tmp);
甚至只是:

assert_options(ASSERT_ACTIVE, 1);   
assert_options(ASSERT_QUIET_EVAL, 1);
assert("$code");
以及文件系统解决方案:

$eval = create_function("", "$code");
$eval();
file_put_contents($tmp=tempnam("/tmp", "EVAL"), "$code");
include($tmp);

所有工作都相当于直接评估。

eval(“echo'Hello World!”;”;好了。典型的安全模式限制会影响
exec
和co。但是
eval
通常不会被阻止。无论如何,你可以通过使用
include(…file\u put\u contents(“tmp”),…)
来解决这个问题,所以招待员真的没有必要禁用它;好了。典型的安全模式限制会影响
exec
和co。但是
eval
通常不会被阻止。无论如何,你可以通过使用
include(…file\u put\u contents(“tmp”,…)
)来解决这个问题,所以主人没有必要禁用它。这总是会失败的,因为
eval
是一种语言结构。这就像测试
函数是否存在(“foreach”)
我不确定。如果您使用
Eval()
进行测试,它可能只会生成一个致命错误。你抓不到那些。您可能要做的是
create_函数(“,”eval('test');”)
而不调用它。我相信这会产生一个非致命的错误。嗯,这是一个很好的观点。很遗憾,您不能使用
函数\u exists()
测试
eval()
。这将始终失败,因为
eval
是一种语言构造。这就像测试
函数是否存在(“foreach”)
我不确定。如果您使用
Eval()
进行测试,它可能只会生成一个致命错误。你抓不到那些。您可能要做的是
create_函数(“,”eval('test');”)
而不调用它。我相信这会产生一个非致命的错误。嗯,这是一个很好的观点。太糟糕了,你不能用
function\u exists()
测试
eval()
。我倾向于同意你的看法。如果这是禁用
eval
的唯一方法,则可以使用进行检查。我倾向于同意您的看法。如果这是禁用
eval
的唯一方法,则可以使用进行检查。