Lawliet adlı üyeden alıntı: mesajı görüntüle
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:
Burada da şöyle birşey oluyor benim şifre tırnak ile başlıyor yani bizim sorun tırnağı olan bir şifre gelirse onu nasıl kaçıracağız çünkü config dosyasında tırnak içine alıyoruz ya db bilgilerini. şifre de tırnak ile başlayıp biterse nasıl çözeriz tartışması yapıyoruz