Şifre içinde özel karakterler (@, $, \) olduğu için config dosyasına düzgün şekilde yazılamıyor. Muhtemelen addslashes() yeterli gelmiyor veya yanlış yerde kullanılıyor.

Sorunun temelinde, şifreyi PHP koduna yazarken kaçış karakterlerinin doğru şekilde işlenmemesi yatıyor.

addslashes() yerine, var_export() kullanmayı dene. var_export(), değeri doğrudan PHP koduna uygun şekilde yazmana yardımcı olur:

$config_value_escaped = var_export($config_value, true);
Bu şekilde PHP'nin kendi kurallarına uygun olarak tırnakları ayarlamasını sağlayabilirsin.

preg_replace() kullanımında regex'in $cfg['mysqlpassword'] değerini düzgün değiştirdiğinden emin olmak için şunu deneyebilirsin:

   $file_contents = preg_replace(
       "/(\\\$cfg\\['" . preg_quote($config_name, '/') . "'\\]\\s*=\\s*)(['\"])(.*?)(\\2);/m",
       "\$1$config_value_escaped;",
       $file_contents
   );
Burada (.*?) yerine, .*? kullanarak mevcut değeri daha güvenli şekilde yakalıyoruz.

Debug için, şifrenin cot_installConfigReplace() fonksiyonuna nasıl ulaştığını kontrol etmek için şu satırı ekleyebilirsin:

file_put_contents('debug-log.txt', "Gelen: " . var_export($config_value, true) . "\n", FILE_APPEND);
Bunları dene. Hâlâ çözülmezse, fonksiyonun tam çağrıldığı yeri ve config.php dosyasının formatını kontrol etmek gerek.