【问题标题】:PHP write to included filePHP写入包含的文件
【发布时间】:2012-04-15 23:47:39
【问题描述】:

我需要包含一个 PHP 文件并从中执行函数。 执行后,在 PHP 脚本结束时,我想在其上附加一些内容。

但我无法打开文件。可以关闭包含的文件/任何类似的东西,这样我就可以将信息附加到 PHP 文件中。

include 'something.php';
echo $somethingFromIncludedFile;

//Few hundred lines later

$fh = fopen('something.php', 'a') or die('Unable to open file');
$log = "\n".'$usr[\''.$key.'\'] = \''.$val.'\';';
fwrite($fh, $log);
fclose($fh);

如何实现?

【问题讨论】:

  • 你为什么要做这样的事情?
  • 我不知道你为什么要这样做?我的意思是有点奇怪。您正在尝试更新已包含的文件...无论您尝试做什么都是错误的方式...
  • 这不是一个真正的问题,应该关闭。

标签: php file include


【解决方案1】:

一般来说,您永远不应该使用 PHP 本身来修改您的 PHP 代码。首先从安全的角度来看,这是一种不好的做法。我相信你可以通过其他方式实现你所需要的。

【讨论】:

  • 是的,我可以用不同的方式实现它,这是我正在做的“实验”,所以这将是最好的方法。
  • 你能描述一下你想用这种方法实现什么吗?
  • 简单的保存系统,我知道它可以通过不同的方式完成。我尝试保存哈希图,所以我追加 $val['nevvar'] = 'newfile';我想在添加新代码之前在代码中使用 $val['nevvar']。
  • 如果您需要保存一些数据以供以后读取或修改,请使用数据库或文件。
【解决方案2】:

正如 Alex 所说,自我修改代码非常非常危险。不从代码中分离数据只是愚蠢的。除了这两个警告之外,PHP 数组相对较慢且扩展性不好(因此您可以使用 file_put_contents('data.ser',serialize($usr)) / $usr=unserialize(file_get_contents('data. ser')) 但它只适用于少数用户)。

那么您就会遇到使用传统文件在多用户上下文中存储数据的问题 - 这是可能的,但您需要构建复杂的锁定队列管理。这通常需要使用守护进程来管理队列/互斥体,而且付出的努力总是多于其价值。

使用数据库存储数据。

【讨论】:

    【解决方案3】:

    正如您已经知道的那样,这种尝试并不是好的尝试之一。如果您真的想包含您的文件,然后在其中附加一些内容,那么您可以通过以下方式进行操作。
    请注意,使用 eval();如果您不能 100% 确定文件内容是否包含有害代码,则存在风险。

    //  This part is a replacement for you include
    $fileContent = file_get_contents("something.php");
    eval($fileContent);
    //  your echo goes here
    
    //  billion lines of code ;)
    
    //  file append mechanics
    $fp = fopen("something.php", "a") or die ("Unexpected file open error!");
    fputs($fp, "\n".'$usr[\''.$key.'\'] = \''.$val.'\';');
    fclose($fp);
    

    【讨论】:

      猜你喜欢
      • 2011-08-02
      • 2012-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      • 1970-01-01
      • 2018-02-16
      相关资源
      最近更新 更多