Kodespa adlı üyeden alıntı: mesajı görüntüle
Yine olmadı debug dosyasında ise çıktı aşağıdaki gibi;

Gelen: 'localhost'
Gelen: '3306'
Gelen: 'qwe'
Gelen: ''....@$3....''
Gelen: 'qwe'
Tamam, burada şifre değerine iki kat tırnak eklenmiş gibi görünüyor. var_export() kullanırken zaten tırnak eklediği için ekstra bir tırnak daha eklenmemesi gerekiyor.

Bunu düzeltmek için şunu dene:

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() çıktısından baştaki ve sondaki tırnakları temizle
    $config_value_escaped = var_export($config_value, true);
    
    if (preg_match('/^["\'](.*)["\']$/s', $config_value_escaped, $matches)) {
        $config_value_escaped = $matches[1]; // Tırnakları kaldır
    }

    // Son olarak, değeri tek tırnak içine al
    $config_value_escaped = "'" . addslashes($config_value_escaped) . "'";

    // 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);
}
- var_export() çıktısının başında ve sonunda zaten bir tırnak oluyordu. Bunları regex ile temizledim.
Şifreyi sadece bir çift tırnak içine aldım ve kaçış karakterlerini düzgün işlemek için addslashes() kullandım.

Bunu çalıştırınca config içine tam olarak şu şekilde yazması gerekiyor:

$cfg['mysqlpassword'] = '....@$3....';
Debug dosyasına da şu şekilde düşmesi lazım:

Alıntı
Gelen: localhost
Gelen: 3306
Gelen: qwe
Gelen: ....@$3....
Gelen: qwe