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

时间:2021-03-05 07:14:45

I am trying to dynamically edit and update my /etc/hosts using the below php code

我试图使用下面的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);

Can anyone tell me where am i going wrong, since i am not able to update the /etc/hosts file.

谁能告诉我哪里出错了,因为我无法更新/ etc / hosts文件。

2 个解决方案

#1


0  

//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

#2


1  

You need root rights to modify /etc/hosts file

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

#1


0  

//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

#2


1  

You need root rights to modify /etc/hosts file

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