PHP eval 没有产生预期的结果

PHP eval does not produce expected results

尽管建议不要使用 eval(),但我不得不在项目的某个部分使用它。

总的来说,我想为系统管理员提供一种上传包含 php 代码的文件的方法——php 代码存储在数据库中,并在满足特定条件时最终加载和执行。

由于这是一个只有少数人可以访问的内部网应用程序,因此安全方面并不严重。

eval() 执行的 php 代码可以是任何可能的代码。

$some_array = array();

$some_array[0] = 'Hello World';

echo $some_array[0];

此代码的输出只是 Hello World。

eval("

$some_array = array();

$some_array[0] = 'Hello World';

echo $some_array[0];

");

理论上这段代码的输出应该是一样的,但实际上不是。

我收到以下错误消息:

Notice: Undefined variable: some_array in C:\xampp\htdocs\test.php on line 8

Notice: Undefined variable: some_array in C:\xampp\htdocs\test.php on line 8

Notice: Undefined variable: some_array in C:\xampp\htdocs\test.php on line 10

Parse error: syntax error, unexpected '=' in C:\xampp\htdocs\test.php(12) : eval()'d code on line 3

看似简单的事情,然而这个问题已经让我忙了好几个小时了……

您必须使用单引号,例如:

eval('

$some_array = array();

$some_array[0] = \'Hello World\';

echo $some_array[0];

');

否则 PHP 将尝试用不存在的已知值替换字符串中的 $some_array。