如何从另一个文件(如Wordpress install.PHP文件)编辑PHP文件?
我正在尝试为我的CMS创建一个安装脚本,但我不知道如何 我希望脚本将如何从另一个文件(如Wordpress install.PHP文件)编辑PHP文件?,php,content-management-system,fopen,Php,Content Management System,Fopen,我正在尝试为我的CMS创建一个安装脚本,但我不知道如何 我希望脚本将config.php中的$var设置为输入的值 比如: 这是工作还是我在用坏方法?因为我试过了,但没用 file_put_contents('/path/to/config.php', "$settings1 = ".clean($_POST['settings1']), FILE_APPEND | LOCK_EX); 并且要知道权限。又快又脏。 需要编辑的文件: $i_am_a_var = [I AM A PLACE H
config.php
中的$var
设置为输入的值
比如:
这是工作还是我在用坏方法?因为我试过了,但没用
file_put_contents('/path/to/config.php', "$settings1 = ".clean($_POST['settings1']), FILE_APPEND | LOCK_EX);
并且要知道权限。又快又脏。需要编辑的文件:
$i_am_a_var = [I AM A PLACE HOLDER NUMBER 4];
以下是安装脚本:
$c=file_get_content('file_to_edit.php');
$c=str_replace('[I AM A PLACE HOLDER NUMBER 4]',"'zimbabue the new value'",$c);
file_put_content('file_to_edit.php',$c);
执行此操作的方法是将配置文件解析为一个变量,对其进行解析并更改解析数据中的设置,然后将文件重新写入文件,覆盖旧文件 如果这是您自己的cms,并且您正在创建系统,那么我将使用数组配置,如$settings['key']=$value;或者您也可以创建ini文件,并使用php的内置函数解析然后重新写入数据 这是我用了很长时间的方法,它对我很有效 示例 以下是Zend Framework组件Zend_Config_Writer的示例用法:(http://zendframework.com/manual/en/zend.config.writer.introduction.html) 它们有用于ini、xml、yaml和本机php数组的组件。明智的做法是将其纳入您的cms或研究他们使用的方法 希望有帮助
Jay我建议您使用.ini文件进行配置。它们非常容易阅读(比如看一看)。写它们有点困难,但我仍然认为这比你想做的要容易
此外,您也可以将JSON文件与JSON_encode()和JSON_decode()一起用于此类目的,因为您已经完成了读取和写入此类文件的函数。请定义“不起作用”。除了极有可能受到最坏类型的注入的攻击之外,这看起来还不错。不过,您可能需要在定义“不起作用”时多做一些工作。我的水晶球在商店里。这段代码,即使它真的工作了,也会用你的一行“设置”完全覆盖原始文件,并生成一个语法无效(例如加载时出现致命错误)的php文件。它总是在同一行重写,并且设置以5-6组的形式输入到文件中。。。(5步安装)@Christ。它会在这里写出“=postvaluehere
,因为它使用了双引号,一个未定义的
$setings1
config.php`也是不带引号的,所以这段代码根本就不会运行。:D直接从POST将代码保存到php文件?:DDD这真是个好主意!我需要在之前和之后使用CHMOD 777和755?apache用户应该对该文件具有写入权限。您能再解释一下吗?这种方法对我来说非常有趣。。。我想创建一个数组,比如$settings=array(1=>“value”,2=>“value2”,等等)代码>…有没有办法用另一个函数写入它?文件是否需要存在或将被创建?我会在create函数中将其分为create和edit两个方法,如果您要使用Zend的包,请使用Zend_Config创建一个新的配置对象,然后将其传递给write方法。在编辑方法中,加载已存在的文件并更新设置,然后将其传递给写入方法。如果一个文件不存在,编写器将创建一个新文件。如果你不想使用Zend软件包,我会查看它们的源代码,寻找你想要使用的格式,并将功能复制到你的项目中?
$c=file_get_content('file_to_edit.php');
$c=str_replace('[I AM A PLACE HOLDER NUMBER 4]',"'zimbabue the new value'",$c);
file_put_content('file_to_edit.php',$c);
$config = new Zend_Config_Ini('config.ini',
null,
array('skipExtends' => true,
'allowModifications' => true));
// Modify a value
$config->production->hostname = 'foobar';
// Write the config file
$writer = new Zend_Config_Writer_Ini(array('config' => $config,
'filename' => 'config.ini'));
$writer->write();