WP CLI ile wp-config.php Dosyasını Yönetme
WordPress kurulumlarında wp-config.php dosyası adeta bir kontrol merkezidir. Veritabanı bağlantı bilgilerinden güvenlik anahtarlarına, hata ayıklama modundan önbellek ayarlarına kadar sitenin temel davranışını bu dosya belirler. Manuel olarak düzenlemek her zaman mümkün olsa da, özellikle çok sayıda site yönetiyorsanız ya da otomasyon betikleri yazıyorsanız, WP-CLI’nin wp config komutu hayat kurtarır. Bu yazıda wp config komutunu tüm alt komutları ve gerçek dünya senaryolarıyla ele alacağız.
wp config Nedir ve Neden Kullanmalısınız?
wp config, WP-CLI’nin wp-config.php dosyasını okumak, yazmak ve yönetmek için sunduğu komut grubudur. Bu komut sayesinde:
wp-config.phpdosyasını sıfırdan oluşturabilirsiniz- Mevcut sabitleri (constant) okuyabilir veya değiştirebilirsiniz
- PHP değişkenlerini yönetebilirsiniz
- Güvenlik anahtarlarını yenileyebilirsiniz
- Dosyanın içeriğini listeleyebilirsiniz
Manuel düzenlemeye göre en büyük avantajı, sözdizimi hatasına düşme riskini ortadan kaldırması ve betik entegrasyonunu kolaylaştırmasıdır. Bir PHP editörü olmadan sunucuya SSH ile bağlandığınızda bile wp config ile güvenle çalışabilirsiniz.
wp config create: Yeni wp-config.php Oluşturma
Yeni bir WordPress kurulumu yapıyorsanız ya da mevcut wp-config.php dosyası bozulduysa, wp config create komutu ile sıfırdan bir yapılandırma dosyası oluşturabilirsiniz.
wp config create
--dbname=benim_sitem
--dbuser=wp_kullanici
--dbpass=guclu_sifre_123
--dbhost=localhost
--dbprefix=wp_
--locale=tr_TR
Bu komut, WordPress kurulum dizininde wp-config.php dosyasını otomatik olarak oluşturur. --locale parametresi sayesinde Türkçe dil ayarlarıyla başlayabilirsiniz.
Eğer dosya zaten varsa ve üzerine yazmak istiyorsanız --force parametresini ekleyin:
wp config create
--dbname=benim_sitem
--dbuser=wp_kullanici
--dbpass=guclu_sifre_123
--force
Önemli Not: --force parametresini dikkatli kullanın. Mevcut yapılandırmanızı tamamen siler ve yerine yenisini yazar. Öncesinde mutlaka yedek alın.
Uzak Veritabanı Sunucusu ile Kullanım
Özellikle yönetilen veritabanı hizmetleri (AWS RDS, DigitalOcean Managed Databases gibi) kullanıyorsanız, --dbhost parametresine uzak sunucu adresini verebilirsiniz:
wp config create
--dbname=production_db
--dbuser=admin
--dbpass=super_secret
--dbhost=mydb.cluster-xyz.eu-west-1.rds.amazonaws.com
--dbprefix=site_
wp config get: Mevcut Değerleri Okuma
wp config get komutu, wp-config.php dosyasındaki belirli bir sabit veya değişkenin değerini getirir. Özellikle otomasyon betiklerinde mevcut değeri kontrol etmek için çok kullanışlıdır.
# Tek bir sabitin değerini okuma
wp config get DB_NAME
# Çıktı: benim_sitem
Tablo önekini öğrenmek istediğinizde:
wp config get table_prefix
# Çıktı: wp_
Hata ayıklama modunun açık olup olmadığını kontrol etmek için:
wp config get WP_DEBUG
# Çıktı: false veya true
Bu komutu bash betiklerinde kullanarak koşullu mantık kurabilirsiniz:
#!/bin/bash
DEBUG_MODE=$(wp config get WP_DEBUG)
if [ "$DEBUG_MODE" = "true" ]; then
echo "UYARI: WP_DEBUG aktif! Production ortamında kapatın."
fi
wp config set: Değer Atama ve Güncelleme
wp config set, mevcut bir sabiti güncellemek veya yeni bir sabit eklemek için kullanılır. Sysadmin işlerinde en sık başvuracağınız alt komutlardan biridir.
Temel Kullanım
# WP_DEBUG sabitini true yapma
wp config set WP_DEBUG true --raw
# WP_DEBUG'u false yapma
wp config set WP_DEBUG false --raw
Burada --raw parametresi önemlidir. Bu parametre olmadan değer string olarak yazılır yani 'true' şeklinde. --raw ile boolean veya integer olarak yazılır.
Tip Belirtme
# Boolean değer
wp config set WP_CACHE true --raw --type=constant
# Integer değer
wp config set WP_MEMORY_LIMIT 256 --raw --type=constant
# String değer (--raw olmadan)
wp config set WP_MEMORY_LIMIT "256M" --type=constant
--type parametresi iki değer alır:
- constant: PHP
define()ile tanımlanan sabitler için - variable:
$table_prefixgibi PHP değişkenleri için
Tablo Önekini Değiştirme
Veritabanı geçişlerinde veya güvenlik sertleştirme çalışmalarında tablo önekini değiştirmeniz gerekebilir:
wp config set table_prefix "yeni_prefix_" --type=variable
Dikkat: Tablo önekini değiştirirseniz veritabanındaki tabloları da yeniden adlandırmanız gerekir. Bu komut yalnızca yapılandırma dosyasını günceller.
Gerçek Dünya Senaryosu: Staging Ortamı Hazırlama
Production’dan aldığınız yedekle staging ortamı kuruyorsunuz ve bazı ayarları değiştirmeniz gerekiyor:
# Staging veritabanı bilgilerini güncelle
wp config set DB_NAME staging_db
wp config set DB_USER staging_user
wp config set DB_PASSWORD "staging_pass_456"
wp config set DB_HOST localhost
# Hata ayıklama modunu aç
wp config set WP_DEBUG true --raw
wp config set WP_DEBUG_LOG true --raw
wp config set WP_DEBUG_DISPLAY false --raw
# Search engine indexlemeyi engelle (bu wp-config ile değil, WordPress ayarlarından yapılır)
# Ama cache'i devre dışı bırakalım
wp config set WP_CACHE false --raw
echo "Staging ortamı hazır!"
wp config delete: Sabit veya Değişken Silme
Artık ihtiyaç duyulmayan sabitleri veya yanlış eklenmiş değerleri wp config delete ile kaldırabilirsiniz:
# Bir sabiti silme
wp config delete WP_DEBUG
# Bir değişkeni silme
wp config delete table_prefix --type=variable
Gerçek hayatta bu komutu ne zaman kullanırsınız? Örneğin bir eklenti kurulumu sırasında wp-config.php dosyasına yazılan ancak eklenti kaldırıldıktan sonra kalan artık sabitleri temizlemek için idealdir.
wp config list: Tüm Yapılandırmayı Görüntüleme
Dosyadaki tüm sabit ve değişkenleri listelemek için wp config list kullanın:
wp config list
Bu komut, her bir sabitin adını, değerini ve tipini gösterir. Hassas bilgilerin (veritabanı şifresi gibi) ekranda görünmesini istemiyorsanız dikkatli kullanın, özellikle ekran kaydı yapılan ortamlarda.
Belirli sabitleri filtrelemek için --fields ve grep kombinasyonu kullanabilirsiniz:
wp config list | grep DEBUG
Sadece belirli alanları görmek için:
wp config list --fields=name,value
wp config path: Dosya Yolunu Öğrenme
wp-config.php dosyasının tam yolunu öğrenmek için:
wp config path
# Çıktı: /var/www/html/sitem/wp-config.php
Bu komut, özellikle betiklerde dosyayı yedeklemek veya izin ayarlarını kontrol etmek için kullanışlıdır:
#!/bin/bash
CONFIG_PATH=$(wp config path)
cp "$CONFIG_PATH" "${CONFIG_PATH}.backup.$(date +%Y%m%d_%H%M%S)"
echo "wp-config.php yedeklendi: ${CONFIG_PATH}.backup.$(date +%Y%m%d_%H%M%S)"
wp config shuffle-salts: Güvenlik Anahtarlarını Yenileme
WordPress, oturum güvenliği için çeşitli salt anahtarları kullanır. Bu anahtarlar çalınırsa ya da bir güvenlik ihlali yaşandıysa derhal yenilenmelidir. wp config shuffle-salts komutu bu işi tek satırda halleder:
wp config shuffle-salts
Bu komut AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY ve diğer tüm güvenlik anahtarlarını WordPress API’sinden yeni değerler çekerek günceller. Komut çalıştırıldıktan sonra tüm aktif kullanıcı oturumları geçersiz kalır ve herkes yeniden giriş yapmak zorunda kalır.
Senaryo: Güvenlik İhlali Sonrası Acil Müdahale
#!/bin/bash
SITE_DIR="/var/www/html/sitem"
cd "$SITE_DIR"
echo "Güvenlik anahtarları yenileniyor..."
wp config shuffle-salts
echo "Tüm aktif oturumlar sonlandırılıyor..."
wp session destroy --all
echo "İşlem tamamlandı. Tüm kullanıcılar yeniden giriş yapmalı."
wp config has: Sabit Varlığını Kontrol Etme
Bir sabitin wp-config.php içinde tanımlı olup olmadığını kontrol etmek için wp config has kullanın:
wp config has WP_DEBUG
# Sabit varsa çıkış kodu 0 döner, yoksa 1 döner
Bu komutu betiklerde koşullu işlemler için kullanabilirsiniz:
#!/bin/bash
if wp config has CUSTOM_CONSTANT; then
echo "Sabit zaten mevcut."
else
wp config set CUSTOM_CONSTANT "deger" --type=constant
echo "Sabit eklendi."
fi
Gelişmiş Kullanım Senaryoları
Çoklu Site Kurulumu (Multisite)
WordPress Multisite kurulumlarında wp-config.php dosyasına özel sabitler eklemek gerekir:
# Multisite aktifleştirme sabitleri
wp config set WP_ALLOW_MULTISITE true --raw
wp config set MULTISITE true --raw
wp config set SUBDOMAIN_INSTALL false --raw
wp config set DOMAIN_CURRENT_SITE "sitem.com"
wp config set PATH_CURRENT_SITE "/"
wp config set SITE_ID_CURRENT_SITE 1 --raw
wp config set BLOG_ID_CURRENT_SITE 1 --raw
Performans Optimizasyonu Sabitleri
# PHP bellek limitini artırma
wp config set WP_MEMORY_LIMIT "256M"
wp config set WP_MAX_MEMORY_LIMIT "512M"
# Otomatik güncelleme ayarları
wp config set AUTOMATIC_UPDATER_DISABLED false --raw
wp config set WP_AUTO_UPDATE_CORE "minor"
# Dosya düzenlemeyi devre dışı bırakma (güvenlik)
wp config set DISALLOW_FILE_EDIT true --raw
wp config set DISALLOW_FILE_MODS false --raw
Cron Yönetimi
# WordPress dahili cron'u devre dışı bırakma (sunucu cron'u kullanmak için)
wp config set DISABLE_WP_CRON true --raw
Ardından /etc/cron.d/wordpress dosyasına:
*/5 * * * * www-data cd /var/www/html/sitem && wp cron event run --due-now
SSL ve HTTPS Zorlama
wp config set FORCE_SSL_ADMIN true --raw
wp config set FORCE_SSL_LOGIN true --raw
Toplu Site Yönetimi için Bash Betiği
Sunucunuzda onlarca WordPress sitesi yönetiyorsanız, tüm sitelerde aynı anda yapılandırma değişikliği yapmanız gerekebilir. İşte bunu otomatikleştiren bir betik:
#!/bin/bash
# Tüm WordPress sitelerinde WP_DEBUG'u kapat ve güvenlik ayarlarını güncelle
SITES_DIR="/var/www/html"
for site_dir in "$SITES_DIR"/*/; do
if [ -f "${site_dir}wp-config.php" ]; then
echo "Işleniyor: $site_dir"
cd "$site_dir"
# WP-CLI'nin çalışıp çalışmadığını kontrol et
if wp core is-installed 2>/dev/null; then
wp config set WP_DEBUG false --raw
wp config set DISALLOW_FILE_EDIT true --raw
wp config set WP_MEMORY_LIMIT "256M"
echo " Tamamlandi: $site_dir"
else
echo " Atlandi (gecersiz kurulum): $site_dir"
fi
fi
done
echo "Tum siteler guncellendi!"
Sık Yapılan Hatalar ve Çözümleri
Hata: wp-config.php bulunamadı
WP-CLI’yi WordPress kurulum dizininin dışında çalıştırıyorsanız bu hatayı alırsınız. --path parametresi ile dizini belirtin:
wp config get DB_NAME --path=/var/www/html/sitem
Hata: Boolean değerler string olarak yazılıyor
--raw parametresini unuttuğunuzda true yerine 'true' string değeri yazılır. PHP’de bu ikisi farklı davranır. Daima boolean için --raw kullanın:
# YANLIS: string 'true' yazar
wp config set WP_DEBUG true
# DOGRU: boolean true yazar
wp config set WP_DEBUG true --raw
İzin Sorunları
wp-config.php dosyasına yazma izni yoksa komutlar başarısız olur. Dosya sahipliğini kontrol edin:
ls -la $(wp config path)
# Web sunucusu kullanıcısının sahibi olması gerekir
chown www-data:www-data $(wp config path)
chmod 640 $(wp config path)
wp config ve Versiyon Kontrolü
wp-config.php dosyasını Git ile takip ediyorsanız, hassas bilgilerin (şifreler, anahtarlar) commit’lenmemesine dikkat edin. .gitignore dosyanıza wp-config.php ekleyin ve bunun yerine wp-config-sample.php ile environment variable tabanlı bir yapıya geçin:
# Environment variable'dan değer okuma örneği
wp config set DB_PASSWORD "$(grep DB_PASSWORD /etc/wordpress/secrets.conf | cut -d= -f2)"
Ya da wp-config.php içinde doğrudan environment variable kullanımını wp config set ile ekleyebilirsiniz. Ancak bu durumda wp config set yerine dosyayı manuel düzenlemeniz daha pratik olur.
Sonuç
wp config komutu, WordPress yönetiminde verimliliği ciddi ölçüde artıran bir araçtır. Manuel nano veya vim ile düzenleme yapmak yerine bu komutları kullanmak hem hata riskini azaltır hem de otomasyon kapılarını açar. Özellikle birden fazla site yönetiyorsanız, toplu güncelleme betikleri yazıyorsanız ya da DevOps pipeline’larına WordPress konfigürasyonunu entegre etmek istiyorsanız wp config vazgeçilmez bir araç haline gelir.
Güvenlik açısından da değerlendirildiğinde, wp config shuffle-salts ile düzenli aralıklarla güvenlik anahtarlarınızı yenilemek, DISALLOW_FILE_EDIT ile tema ve eklenti editörünü kapatmak gibi önlemleri tek bir betikle tüm sunucularınıza uygulamak büyük kolaylık sağlar. Bu komutları kendi iş akışınıza entegre etmek için küçük bir yatırım yaptığınızda, uzun vadede kazanacağınız zaman ve güvenlik oldukça değerlidir.
