mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2026-05-14 10:13:52 -04:00
Rework saving of configuration files (#8220)
* Attempt to restore user config if `file_put_contents()` fails * Second approach * Minor preference: `.tmp.php` Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr> * Change boolean compare syntax Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr> * fix?
This commit is contained in:
@@ -210,14 +210,22 @@ class Minz_Configuration {
|
||||
* Save the current configuration in the configuration file.
|
||||
*/
|
||||
public function save(): bool {
|
||||
$tmp_filename = $this->config_filename . '.tmp.php';
|
||||
$back_filename = $this->config_filename . '.bak.php';
|
||||
@rename($this->config_filename, $back_filename);
|
||||
|
||||
if (file_put_contents($this->config_filename,
|
||||
"<?php\nreturn " . var_export($this->data, true) . ';', LOCK_EX) === false) {
|
||||
if (!file_put_contents($tmp_filename,
|
||||
"<?php\nreturn " . var_export($this->data, true) . ';', LOCK_EX)) {
|
||||
@unlink($tmp_filename);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!copy($this->config_filename, $back_filename)) {
|
||||
@unlink($tmp_filename);
|
||||
return false;
|
||||
}
|
||||
|
||||
@rename($tmp_filename, $this->config_filename);
|
||||
|
||||
// Clear PHP cache for include
|
||||
if (function_exists('opcache_invalidate')) {
|
||||
opcache_invalidate($this->config_filename);
|
||||
|
||||
Reference in New Issue
Block a user