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

[PHPR]$cfg['mysqlpassword'] = '....@$3....';[/PHP]

Bunu bir dene; log dosyasına da bakarak tekrar kontrol edelim.
Yine olmadı debug dosyasında ise çıktı aşağıdaki gibi;

Gelen: 'localhost'
Gelen: '3306'
Gelen: 'qwe'
Gelen: ''....@$3....''
Gelen: 'qwe'