如何从另一个文件编辑PHP文件,如Wordpress install.php文件?

时间:2012-02-09 02:34:03

标签: php content-management-system fopen

我正在尝试为我的CMS创建安装脚本,但我不知道如何...

我希望我的脚本将$var中的config.php设置为输入的值。

像:

<?php
$file = config.php
$file_handle = fopen($file, "rw");

fwrite($file_handle, "$settings1 = ".$_POST['settings1']);

fclose($file_handle);
?>

这是工作还是我用坏方法?因为我尝试了它并且它不起作用......

4 个答案:

答案 0 :(得分:2)

执行此操作的方法是将配置文件解析为变量,解析它并从解析的数据中更改设置,然后将文件重新写回文件,覆盖旧文件。

如果这是你自己的cms并且你正在创建系统,我会使用像$ settings ['key'] = $ value这样的数组配置;或者您也可以使用ini文件并使用php的内置函数来解析然后重新写入数据。

这是我用了很长时间的方法,它对我有用。

示例

以下是Zend Framework组件Zend_Config_Writer的示例用法:(http://zendframework.com/manual/en/zend.config.writer.introduction.html)

$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();

它们具有ini,xml,yaml和本机php数组的组件。将它加入你的cms或研究他们使用的方法是明智的。

希望有所帮助,

答案 1 :(得分:0)

file_put_contents('/path/to/config.php', "$settings1 = ".clean($_POST['settings1']), FILE_APPEND | LOCK_EX);

请注意许可。

答案 2 :(得分:0)

快速而肮脏。
您需要编辑的文件:

$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);

答案 3 :(得分:0)

我建议您使用.ini文件进行配置。它们非常容易阅读(例如,查看parse_ini_file())。写它们有点困难,但我仍然认为它比你想做的更容易。

此外,您可以将json_encode()和json_decode()的JSON文件用于此类目的,因为对于它们,您已经完成了读取和写入此类文件的功能。