Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP写入包含的文件_Php_File_Include - Fatal编程技术网

PHP写入包含的文件

PHP写入包含的文件,php,file,include,Php,File,Include,我需要包括一个PHP文件并从中执行函数。 在执行之后,在PHP脚本的末尾,我想给它添加一些东西 但我无法打开文件。可以关闭包含的文件/任何类似的文件,这样我就可以将信息附加到PHP文件中 include 'something.php'; echo $somethingFromIncludedFile; //Few hundred lines later $fh = fopen('something.php', 'a') or die('Unable to open file'); $log

我需要包括一个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本身修改PHP代码。首先,从安全角度来看,这是一种糟糕的做法。我相信你可以通过其他方式实现你所需要的。

正如你已经知道的那样,这种尝试不是一种好的尝试。如果您真的想包含文件,然后在其中附加一些内容,那么您可以按以下方式执行。
请注意使用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);

正如Alex所说,自我修改代码是非常非常危险的。不把数据和代码分开是愚蠢的。除了这两个警告之外,还有一个事实,即PHP数组速度相对较慢,扩展性不好(因此您可以将内容(data.ser)、序列化($usr))/$usr=unserialize(file_get_contents('data.ser'))归档,但它只适用于少数用户)

然后,您会遇到使用传统文件在多用户上下文中存储数据的问题—这是可能的,但您需要构建复杂的锁定队列管理。这通常需要使用一个守护进程来管理队列/互斥对象,而且总是比它的价值更大


使用数据库来存储数据。

是的,我可以用不同的方法来实现,这是我正在进行的“实验”,因此这将是实现这一点的最佳方法。您能描述一下您使用这种方法试图实现什么吗?简单的保存系统,我知道可以用不同的方法来实现。我试图保存hashmap,所以我附加$val['nevvar']='newfile';在追加新代码之前,我想在代码中使用$val['nevvar']。如果需要保存一些数据以便以后阅读或修改,请使用数据库或文件。为什么要这样做?我不确定为什么要这样做?我是说这有点奇怪。您正在尝试更新已包含的文件。。。无论你想做什么,这都是错误的……这不是一个真正的问题,应该关闭。