如何使用php脚本动态编辑和更新我的etc / hosts文件

时间:2013-11-21 10:10:22

标签: php linux hosts

我正在尝试使用以下php代码动态编辑和更新我的/ etc / hosts

$string_Data = 'It works success!!';
$file_To_Edit = "/etc/hosts";
exec("sudo chmod 777 /etc/hosts");
$opened_File = file($file_To_Edit) or die("Error. Code:2 - Can not open file $file_To_Edit");
$lines = preg_grep(' /test.com/', $opened_File);
   foreach(array_keys($lines) as $key) {
       $opened_File[$key] = substr($opened_File[$key], 0, -1) . $string_Data;
  }
$f = fopen($file_To_Edit, 'w') or die("Error $file_To_Edit"); 
fwrite($f, implode("\n", $opened_File)); 
fclose($f);

任何人都可以告诉我哪里出错了,因为我无法更新/ etc / hosts文件。

2 个答案:

答案 0 :(得分:1)

您需要root权限才能修改/ etc / hosts文件

答案 1 :(得分:1)

//suppose you are in  /var/www/html/website/

$currentdir=getcwd();  // it will save your current directory location    

chdir('../../../../etc/');  // it will change your web directory( /var/www/html/website/)  to etc directory (/etc/)

$file='hosts';
$current=file_get_contents($file);
$string_Data = 'It works success!!';
$current.=$string_Data;
if(file_put_contents($file, $current))
{
echo "success in writing";
}
else
{
echo "fail in writing";
}

chdir("$currentdir"); // it will change directory (/etc/) to your web directory( /var/www/html/website/ )

//change permission before run php page because if your user don't have permission this code can't do writing