Laravel 4 Paylaşımlı Host Komut (Shared Host Command)

Merhaba Arkadaşlar ,

Laravel projenizi henüz paylaşımlı host’a yüklemediyseniz. Laravel Paylaşımlı Host’ta yayınlamak. ile ilgili yazımı okuyabilirsiniz.

Projemiz’i teknik olarak internete açtık. Ancak , şimdi içerikleri nasıl dolduracağız. Migration’ları seed’leri boşuna mı yazdık? ‘Hayat “http://localhost” da çok güzeldi.’ peki ya şimdi..

Bana göre Laravel’i üst seviyelere taşıyan ve önüzmüzdeki yıllarda daha popüler olmasını sağlayacak özellikleri  : Composer , Bundle , Eloquent , Migratin , Seed vs.. bunlar başta olmak üzere geliştirilen opensource kütüphaneleri entegre çalışması. Eloquent hariç tüm bu özellikler bildiğiniz üzere konsol bağlantısı gerektiriyor veya tutorial’dan öyle gördük.

VPS’imiz , SSH’ımız yok ölelim mi?

Tabi ki hayır.. Ozaman ‘Talk is easy show me the code!’ diyosunuz.. 😀

Command Routing

  • //Author muharremtigdemir.com
    Route::get('command/{username}/{password}/{command}' , [email protected]');

    Yukarıdaki routing’i  app/routes.php ye ekleyin.

Command Controller

  • <?php
    //Author muharremtigdemir.com
    use Symfony\Component\Console\Output\StreamOutput;
    
    class CommandController extends Controller {
    
        private $file = 'foo.txt'; //Sonuçların geçici yazılacağı dosya
    
        public function getIndex($username, $password, $command) {
    
            if ($username == 'username' && $password == 'password') {//İsim ve Şifrenizi değiştirin!!
    
                echo '--------CommandResult---------<br>';
    
                $stream = fopen($this->file, 'w');
                Artisan::call($command, array('test'), new StreamOutput($stream));
    
                $this->printResult();//Print and Clean Result
            } else {
                App::abort(404);//Controller saklayalım
            }
        }
    
        private function printResult() {
            $file_handle = fopen($this->file, "r");
    
            while (!feof($file_handle)) {
                $line_of_text = fgets($file_handle);
                print $line_of_text . "<BR>";
            }
            fclose($file_handle);
    
            $this->cleanResult();//Clean Result File
        }
    
        private function cleanResult()
        {
           $file_handle = fopen($this->file, "w");
           fwrite($file_handle,"Welcome Home Honey !!! This is muharremtigdemir.com");
           fclose($file_handle);
        }
    }

     NOT : Sonuçlar stream oluştuğu için log tutarak sonuçları dosyaya yazdırıp temizledim(fire and forget). Eğer sonuçları direkt browser da göstermenin yolunu biliyorsanız. Lütfen benimlede paylaşın 🙂

Kodlarımız hazır sonuçları görelim..

  • Php artisan help :

URL:localhost:8000/command/username/password/help

console_help

console_help

 

  • php artisan route :

URL: localhost:8000/command/username/password/route

route_command

route_command

  • php artisan key:generate

URL: localhost://command/username/password/key:generate

key_generate

Sonuç : Bu controller sayesinde aslında sadece Laravel’in ssh komutlarına ulaşmış oluyoruz.

Önemli: Console ve komutlarla işiniz bittiğinde routing’i ve controller’ı deaktif etmenizi tavsiye ederim. Güvenlik önemlidir!!

Muharrem Tığdemir

1 Comment

  • Altuğ Gülsepet

    April 15, 04 2014 09:25:48

    allah razı olsun kardeş çok yardımcı oldun.

Leave a Reply