Codeigniter: Lokalde ve Sunucuda Farklı Ayarlar

Codeigniter: Lokalde ve Sunucuda Farklı Ayarlar Bu yazıya başlık bulmakta oldukça zorlandım doğrusu. Yine de ne demek istediğimi anlamamış olabilirsiniz. Hemen açıklayalım.

Üzerinde çalıştığınız site şu an yayında ve kendi bilgisayarınızda bir çok değişiklik yaptınız. Hangi dosyalarda değişiklik yaptığınızı hatırlamıyorsunuz. Bu yüzden tüm application klasörünü ftp ile transfer ettiniz. Kontrol etmek için siteyi açtığınızda hoş bir süprizle karşılaştınız: Veritabanıyla bağlantı kurulamıyor. Çünkü bilgisayarınızdaki mysql sunucunuza göre ayarladığınız database.php dosyasını da transfer etmiş oldunuz.

Tabi sadece veritabanı ile sınırlandırmak yanlış olur. Örneğin error_reporting özelliğini projeyi geliştirirken kendi bilgisayarınızda açık tutarken sunucuda kapatmak yararınıza olacaktır. Bu konuda daha bir çok örnek verebiliriz.

Sunucuda ve kendi bilgisayarımızda farklı ayarlar kullanmak için bir sabit oluşturup sunucudamı yoksa lokaldemi olduğumuzu bu sabite atayacağız ve bu işlemi index.php dosyamızda yapacağız. Aşağıdaki kodu index.php dosyamızın en üst tarafına ekliyoruz.

define('ENV', strpos($_SERVER['SERVER_NAME'], 'local') !== FALSE ? 'local' : 'live');

Burada ENV isimli bir sabit oluşturduk ve sunucu adında local geçerse local, geçmezse live olacak şekilde ayarladık. Artık sitenin lokaldemi yoksa sunucudamı çalıştığınız if deyimi ile kolayca öğrenebiliriz.

Yukarıda bahsettiğim gibi PHP hatalarını lokalde açıp sunucuda kapatmak isterseniz index.php dosyasındaki error_reporting(); kodunu aşağıdaki ile değiştirin.

error_reporting((ENV != 'live') ? E_ALL : 0);

Asıl yapmak istediğimiz farklı veritabanı sunucu ayarları kullanmaktı. Bunun için config/database.php dosyasında bir kaç değişiklik yapacağız. Codeigniter farklı farklı veritabanı sunucusu ayarlarını gruplandırmamızı sağlayan bir yapıya sahip. $active_group değişkenine değer olarak ENV sabitini atayıp iki farklı ayar grubu oluşturuyoruz. database.php dosyamız şe şekilde olacak:

$active_group = ENV;
$active_record = TRUE;

$db['local']['hostname'] = "localhost";
$db['local']['username'] = "lokal_kullanici";
$db['local']['password'] = "lokal_sifre";
$db['local']['database'] = "lokal_veritabani";
$db['local']['dbdriver'] = "mysql";
$db['local']['dbprefix'] = "ci_";
$db['local']['pconnect'] = FALSE;
$db['local']['db_debug'] = TRUE;
$db['local']['cache_on'] = FALSE;
$db['local']['cachedir'] = "";
$db['local']['char_set'] = "utf8";
$db['local']['dbcollat'] = "utf8_general_ci";
$db['local']['swap_pre'] = "";
$db['local']['autoinit'] = TRUE;
$db['local']['stricton'] = FALSE;

$db['live']['hostname'] = "localhost";
$db['live']['username'] = "sunucu_kullanici";
$db['live']['password'] = "sunucu_sifre";
$db['live']['database'] = "sunucu_veritabani";
$db['live']['dbdriver'] = "mysql";
$db['live']['dbprefix'] = "ci_";
$db['live']['pconnect'] = FALSE;
$db['live']['db_debug'] = TRUE;
$db['live']['cache_on'] = FALSE;
$db['live']['cachedir'] = "";
$db['live']['char_set'] = "utf8";
$db['live']['dbcollat'] = "utf8_general_ci";
$db['live']['swap_pre'] = "";
$db['live']['autoinit'] = TRUE;
$db['live']['stricton'] = FALSE;

Burada local grubuna kendi bilgisayarımızda kullanacağımız ayarları, live grubuna sunucuda kullanacağımız ayarları yazıyoruz. ENV sabitini uygulamamızın sunucu ile bilgisayarımızda farklı davranmasını istediğimiz tüm durumlarda kullanabiliriz.

Bu yazı en son 18 Şubat 2011 tarihinde düzenlenmiştir ve güncelliğini yitirmiş olabilir.

  • tolgahan

    Bende bu yöntemi kullanıyorum başarılı

blog comments powered by Disqus

© Mustafa Navruz 2011 0.0177 sn.

^ Başa Dön