使用PHP對配置檔案進行修改

2021-03-31 08:56:59 字數 1767 閱讀 4767

使用php對配置檔案進行修改

文/ heiyeluren

今天做乙個php web shell 程式的密碼修改,就碰到問題了,我們的密碼和程式是在同乙個檔案裡的,如何做到無縫修改,並且不影響程式正常執行。

我程式的配置檔案的格式是類似下面的形式:

/****************== 配置選項 ***************====*/

//登陸使用者和密碼,請修改為自己的使用者名稱和密碼

$manage["user"] = "root";

$manage["pass"] = "123";

//本檔案目前的名字,請正確填寫,否則相關操作可能將無效

$manage["file"] = "./ps101.php";

/****************== 配置結束 ***************====*/

我如何提取出 $manage['user'] = ''root''這樣的值進行修改工作,因為檔案比較大,**很多,配置檔案是在程式的頭部分,首先想了個基本的思路是:

使用file()遍歷整個檔案,然後找到某個陣列的值的字串是:

$manage["user"]   = "root";

然後,用exploade()來把 $manage["user"] = "";通過"="進行分割,放到兩個陣列然後把第二個值用更新後的值去替換

最後再把整個字串重新寫入到檔案....

但是**實現起來很困難,上網問高手,給了這麼段**:

$lines = file("config.php");

$count =sizeof($lines);

for($i=0; $i<$count; $i++)

}$str = implode($lines, "/r/n");

然後將$str寫回到檔案

確實,按照我的思路來的話,**就應該是這樣的,但是我去一執行,並不好使。

怎麼半呢?想了半天,能不能通過正規表示式來做。

於是又考慮到 $manage[''user'']這樣的形式在程式裡出現的次數不多,也許能夠通過正則替換來修改。

那麼基本的思路就出來了,把所有的程式**讀進乙個變數裡,然後通過正則替換掉這個字串裡的相應內容,**列出:

// 開啟檔案

$fp = fopen($manage["file"], 'r');

// 把檔案讀進$configfile

$configfile = fread($fp, filesize($manage["file"]));

fclose($fp);

// 通過正則替換來做

$configfile = preg_replace("/[$]manage/[/"user/"/]/s*/=/s*[/"'].*?[/"']/is", "/$manage[/"user/"] = /"$user_name/"", $configfile);

$configfile = preg_replace("/[$]manage/[/"pass/"/]/s*/=/s*[/"'].*?[/"']/is", "/$manage[/"pass/"] = /"$user_pass/"", $configfile);

// 把檔案重新寫回原來的地方

$fp = fopen($manage["file"], 'w');

fwrite($fp, trim($configfile));

fclose($fp);

於是我一試驗,還真可以~~~~

寫於  2004-12-24  02:00

祝大家聖誕節快樂!

使用PHP對配置檔案進行修改

url 想修改配置檔案aaa.conf,內容如下 username kiyone password 123 class chass1 我想要修改 password 下面的123這行密碼。方案採用把這兩行替換成空,然後在重新把這兩行寫在配置檔案的結尾。fp fopen aaa.conf r confi...

使用solr進行配置檔案

我現在使用的是乙個已經搭建好的solr環境下進行的測試 第一步,需要配置solrhome中的乙個配置檔案schema.xml 配置內容如下,上面配置的是ik分詞器,下面是配置完成的域.因為我在這個需要使用的solr進行全文檢索的只有這幾個重要的字段.然後內容如下 class solr.textfie...

使用sed修改配置檔案

問題 在介面up的時候,向乙個配置檔案中加入一些配置項,down的時候,將這些配置項從配置檔案中刪除。ra temp.conf 儲存介面相關的配置項,ra conf是最終配置檔案。realdevice是介面名稱。up.sh sed e s ppp0 realdevice ra temp.conf r...