使用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...