Lawliet adlı üyeden alıntı: mesajı görüntüle
Ş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.

Sanırım bu şekilde diyorsun doğru mu anladım bilmiyorum;

function cot_installConfigReplace(&$file_contents, $config_name, $config_value)
{
// Gelen değeri debug için logla
file_put_contents('debug-log.txt', "Gelen: " . var_export($config_value, true) . "\n", FILE_APPEND);

// var_export ile güvenli PHP formatında değer oluştur
$config_value_escaped = var_export($config_value, true);

// Regex ile değiştirilecek deseni belirle
$pattern = "/(\$cfg\['" . preg_quote($config_name, '/') . "'\]\s*=\s*)(['"])(.*?)(\2);/m";
$replacement = "$1$config_value_escaped;";

// Config dosyasındaki değeri değiştir
$file_contents = preg_replace($pattern, $replacement, $file_contents);

// Değiştirilmiş içeriği debug için kaydet
file_put_contents('config-debug.php', $file_contents);
}


Eğer bundan bahsettiysen yine olmadı config içine aşağıdaki gibi yazdı şimfi de;
$cfg['mysqlpassword'] = ''....@....'';