date('c'), 'files' => [], 'total_replacements' => 0, 'ok' => true]; $TS = date('Ymd-Hi'); $files = [ '/var/www/html/cron-control.html', '/var/www/html/enterprise-management.html', '/var/www/html/enterprise-model.html', '/var/www/html/ops-center.html', '/var/www/html/wiki.html', // faq déjà fixé ]; foreach ($files as $f) { $info = ['path' => $f, 'exists' => file_exists($f)]; if (!$info['exists']) { $R['files'][] = $info+['skip'=>'missing']; continue; } // Check chattr exec('lsattr ' . escapeshellarg($f) . ' 2>&1', $lsa); $immut = isset($lsa[0]) && strpos($lsa[0], '-i-') !== false; $info['chattr_i'] = $immut; if ($immut) { $R['files'][] = $info + ['skip' => 'chattr_i_root_needed']; continue; } $content = @file_get_contents($f); $before = substr_count($content, '11435'); if ($before === 0) { $R['files'][] = $info+['skip'=>'no_11435']; continue; } $GOLD = "/opt/wevads/vault/" . basename($f) . ".GOLD-pre-11434-{$TS}"; @copy($f, $GOLD); $new = str_replace('11435', '11434', $content); $temp = $f . '.tmp-opus5'; file_put_contents($temp, $new); $renamed = @rename($temp, $f); clearstatcache(); $after = substr_count(@file_get_contents($f), '11435'); $info += [ 'before' => $before, 'after' => $after, 'renamed' => $renamed, 'gold' => $GOLD ]; $R['files'][] = $info; if ($after === 0) $R['total_replacements'] += $before; else $R['ok'] = false; $lsa = []; // reset for next iter } echo json_encode($R, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);