使用PHP代码写入PHP文件?

时间:2011-12-05 18:30:54

标签: php file

是否有可能使用PHP语言本身编写常规PHP文件? 是否与编写.txt文件相同?
或者还有其他我应该知道的东西?

每当我将记录保存到数据库中时,我想覆盖同一个文件myConfig.php,它应该包含这样的内容:

<?php

     $myVar = "myValue";

?>

2 个答案:

答案 0 :(得分:12)

编写php文件与编写其他文本文件没什么不同。实现此目的的一种方法是file_put_contents()。像这样近似的东西应该有效:

file_put_contents('myConfig.php', "<?php

    \$myVar = \"myValue\";

?>");

您必须确保运行php的用户具有在给定目录中写入文件的权限。这是一个常见的陷阱。如果权限错误无效,请检查错误日志中的错误。

另一方面,基于从数据库加载数据动态编写php代码可能会导致安全漏洞。具体来说,它可能允许恶意用户将任意PHP代码注入您的系统并执行它。如果数据库中的数据来自用户填写的Web表单,则尤其如此。要非常小心。验证,清理并正确编码所有动态值。实际上最好的办法是退后一步,重新考虑你的设计。你真的需要动态地将这些配置文件写为php文件吗?你可以使用ini文件吗? (提示:parse_ini_file())。或者你可以直接使用数据库中的配置值而无需编写文件吗?

答案 1 :(得分:2)

如果您的权限是正确的,它应该可以正常运行:

<?php
file_put_contents('selfwrite2.php',<<<END
<?php echo "Hello World!";
END
);
include 'selfwrite2.php';