Kodespa adlı üyeden alıntı: mesajı görüntüle
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'] = ''....@....'';
Evet, doğru noktaya geldin ama küçük bir hata var.
var_export($config_value, true) çıktısını doğrudan regex ile yerleştirince, çift tırnaklı bir değer tek tırnak içinde kalıyor; bu da hataya yol açıyor.

Şu düzenlemeyi yap:

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);

    // Çift tırnak ile başlıyorsa ve bitiyorsa tek tırnağa çevir
    if (strpos($config_value_escaped, '"') === 0 && strrpos($config_value_escaped, '"') === strlen($config_value_escaped) - 1) {
        $config_value_escaped = "'" . substr($config_value_escaped, 1, -1) . "'";
    }

    // 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);
}
Buradaki temel fark; var_export() çıktısını alıp, eğer çift tırnak ile başlıyorsa ve bitiyorsa tek tırnak içine alıyoruz. Böylece config dosyasına şu şekilde düzgün bir formatta yazılacak:

$cfg['mysqlpassword'] = '....@$3....';
Bunu bir dene; log dosyasına da bakarak tekrar kontrol edelim.