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.