Я пытался использовать fopen, но мне удалось добавить контент в конец файла. Можно ли перезаписать все содержимое новым контентом в PHP?
Использовать file_put_contents()
file_put_contents('file.txt', 'bar'); echo file_get_contents('file.txt'); // bar file_put_contents('file.txt', 'foo'); echo file_get_contents('file.txt'); // foo
Альтернативно, если вы застряли в fopen()
вы можете использовать режимы w
или w+
:
'w' Открыт только для записи; поместите указатель файла в начало файла и обрезайте файл до нулевой длины. Если файл не существует, попытайтесь его создать.
'w +' Открыт для чтения и записи; поместите указатель файла в начало файла и обрезайте файл до нулевой длины. Если файл не существует, попытайтесь его создать.
$fname = "database.php"; $fhandle = fopen($fname,"r"); $content = fread($fhandle,filesize($fname)); $content = str_replace("192.168.1.198", "localhost", $content); $fhandle = fopen($fname,"w"); fwrite($fhandle,$content); fclose($fhandle);
В качестве альтернативы, если у вас есть полный контроль над вашим сервером, почему бы не «гарантировать» операцию по ее настройке, удалив файл раньше?
$wait=exec('rm -r -f myfile.txt'); file_put_contents('myfile.txt','new content');
$ Wait здесь – просто удерживать команду remove, пока она не будет выполнена.