v2.5.2
Giriş yap

Php install sayfasi

aykhan
437 defa görüntülendi

Merhaba envanto için bir script hazırlıyorum, satışta olan scriptlerde scripti ilk kurduğumuz zaman ilk olarak intall sayfası açılıyor. Bu sayfadan db user name password host felan ekleniyo ve bu sayedede db kod yazmadan yada kodlara karışmadan kurulmuş oluyo. Bu gibi işlemi laravelde nasıl yapa bilirim? yani env verileri yada diger dosya içlerini dinamik olarak nasıl oluştura biliriz?

Cevap yaz
Cevaplar (3)
h4ckdr0
692 gün önce

Merhaba, Laravel ile bir script oluştururken, kurulum sırasında veritabanı bilgilerini dinamik olarak almak için aşağıdaki adımları takip edebilirsin:

  • İlk olarak, kurulum sayfası oluşturmak için bir sayfa oluşturman gerekir. Bu sayfaya kullanıcılar tarafından girdi olarak istenen veritabanı bilgilerini alacak form elemanları ekleyebilirsin.

  • Formdan girdi olarak alınan veritabanı bilgilerini, kurulum sırasında .env dosyasına yazdırmak için aşağıdaki kod bloğunu kullanabilirsin:

$database_name = request('database_name');
$database_username = request('database_username');
$database_password = request('database_password');
$database_host = request('database_host');

$env_update = file_get_contents(base_path('.env'));

$env_update = str_replace('DB_DATABASE=homestead', 'DB_DATABASE='.$database_name, $env_update);
$env_update = str_replace('DB_USERNAME=homestead', 'DB_USERNAME='.$database_username, $env_update);
$env_update = str_replace('DB_PASSWORD=secret', 'DB_PASSWORD='.$database_password, $env_update);
$env_update = str_replace('DB_HOST=127.0.0.1', 'DB_HOST='.$database_host, $env_update);

$fp = fopen(base_path('.env'), 'w');
fwrite($fp, $env_update);
fclose($fp);

Bu kod bloğu, formdan alınan veritabanı bilgilerini .env dosyasına yazar.

  • Bu işlemleri tamamladıktan sonra, veritabanı bağlantısını kontrol etmek için aşağıdaki kod bloğunu kullanabilirsin:
try {
    DB::connection()->getPdo();
} catch (\Exception $e) {
    die("Veritabanına bağlanılamıyor. Lütfen .env dosyasındaki veritabanı bilgilerini kontrol edin.");
}

Eğer veritabanına bağlanılabiliyorsa, kurulum işlemini tamamlamış olursun. Eğer veritabanına bağlanılamıyorsa, kullanıcıya .env dosyasındaki veritabanı bilgilerini kontrol etmesi gerektiği bilgisini gösterebilirsin.

Ek olarak, kurulum sırasında veritabanı oluşturulmasını istiyorsan, aşağıdaki kod bloğunu kullanabilirsin:

use Illuminate\Support\Facades\Schema;

try {
    Schema::create($database_name, function($newtable)
    {
        $newtable->increments('id');
        $newtable->string('name',255);
        $newtable->timestamps();
    });
} catch (\Exception $e) {
    die("Veritabanı oluşturulamıyor. Lütfen .env dosyasındaki veritabanı bilgilerini kontrol edin.");
}

Bu kod bloğu, veritabanı adını formdan alır ve veritabanı oluşturmayı dener. Eğer veritabanı oluşturulamıyorsa, kullanıcıya .env dosyasındaki veritabanı bilgilerini kontrol etmesi gerektiği bilgisini gösterebilirsin.

Veritabanı oluşturulduktan sonra, ilgili tablo ve sütunları oluşturmak için Schema façadesini kullanabilirsin. Örneğin, aşağıdaki kod bloğu ile bir "users" tablosu oluşturabilirsin:

Schema::create('users', function($table) {
   $table->increments('id');
   $table->string('name');
   $table->string('email')->unique();
   $table->string('password');
   $table->timestamps();
});

Bu repo'yu npx ile kurup inceleyerek projenizi daha da geliştirebilirsiniz (istediğiniz tarzda bir script mevcut): https://github.com/erhanurgun/fork-app-vaahcms

Umarım bu bilgiler yardımcı olmuştur. Eğer daha fazla sorunuz varsa lütfen sormaktan çekinmeyin!

aykhan
693 gün önce

@acemi bilgi için teşekkür ederim ama ben laravelde kullanmak istiyorum, dinamik env mantığı yani

acemi
693 gün önce

php install script diye arat google da görürsün.

basiti mysql bilgilerini girersin sonra db.php ye ordaki verileri yazdırtırsın yine php ile veya baska ne kullanıyorsun balantı gerçekleşti ise
cpanel bilgilerini istersin bilgiler doğru ise mysql e dizinde olan sql i import edersin oldu bitti.