-3

我正在尝试使用 fwrite() 函数动态编写 PHP 文件,但它似乎不起作用。代码肯定在正在写入的字符串中,但是当我打开写入的文件时,它就不存在了!我的假设是,无论出于何种原因,PHP 编译器都会读取字符串中的 PHP 标记,执行它们之间的内容,然后放弃它们。这个假设准确吗?我能做些什么来绕过它?

代码看起来像这样:

$code = "<?php echo \"This is a dynamically written file!\"; ?>";
$openFile = fopen("filename.php","w");
fwrite($openFile,$code);
fclose($openFile);

我已经尝试过围绕“代码”变量的单引号和双引号。

编辑:我尝试了单引号,但随后单引号变量与双引号变量混合并转换它。我觉得很笨。很抱歉浪费了大家的时间。

4

5 回答 5

0

请尝试以下操作,以便 PHP 不会解析字符串的内容(单引号):

$code = '<?php echo "This is a dynamically written file!"; ?>';
$openFile = fopen("filename.php","w");
fwrite($openFile,$code);
fclose($openFile);
于 2013-07-30T19:54:21.823 回答
0

$code = "<"."?php echo \"This is a dynamically written file!\"; ?".">";

PHP标签被解析。

于 2013-07-30T19:58:47.663 回答
0

您可能遇到权限问题。我得到了这个工作。检查使用:

<?php

$code = "<?php echo \"This is a dynamically written file!\"; ?>";
$openFile = fopen("filename.php","w");

print_r(error_get_last());

fwrite($openFile,$code);
fclose($openFile);

?>

有什么print_r收获吗?

于 2013-07-30T20:02:13.047 回答
0

我有同样的问题,原来我需要使用绝对路径,参考这个解决方案

于 2017-08-24T09:47:32.887 回答
0

您需要在字符串周围加上文字引号。你不想让 PHP 解析它,你只想要那个字符串。此外,还有另一个功能file_put_contents()

$code = '<?php echo "This is a dynamically written file!"; ?>';
$openFile = file_put_contents("filename.php");

该函数等同于依次调用 fopen()、fwrite() 和 fclose() 将数据写入文件。

当心:您正在玩一个危险的游戏,编写其他 PHP 文件。您最好 110% 确定自己在做什么,并对您采取的每一步进行双重/三重检查。无论您在做什么,都有更安全的方法。

于 2017-08-24T09:49:56.287 回答