我正在尝试使用以下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文件。
答案 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