是否可以直接从php更改php源代码


Is it possible to change php source code directly from php?

示例:

来源:

$var=X

url调用:

 ....?changeSourceTo:Y

php:

//do something? (what)

来源:

$var=Y

这对于快速更改源代码非常有用,而无需打开它,也无需将下一次调用相同的参数传递给url。。。。(我知道我可以使用一个带有var参数的文件,如果$_GET['var']更改文件,或者更好地设置数据库…)

将不同版本的代码放入不同的文件中,并使用require($changeSourceTo);指定要加载的文件。

我应该补充一点,这会带来一些固有的安全风险,因为用户可以通过请求指定文件系统路径和更改代码,两者都可能被攻击者滥用。所以也许可以在dev中使用,但要确保它不会上线。

你可以做到,是的。只需使用fopen()从文件内部打开.php文件,修改所需内容,然后保存(覆盖它)。

所以如果你有test.php,代码是:

<?
$x = 1;
$myfile = fopen('test.php', 'w');
$txt = '<?$x=2;echo $x?>';
fwrite($myfile, $txt);
fclose($myfile);
echo $x;
?>

第一次运行时,您将看到"1"。如果重新加载页面,您将看到"2"。如果你有很多代码,这可能会很棘手,在这种情况下,我建议将文件拆分为"碎片",并与include一起使用,这样你就可以修改你真正需要的小块。

正如Steve所提到的,修改它的方式要非常小心。例如,如果我的例子可以用$_GET[]修改,那将是非常不安全的。