Kohana -

6 Cevap php

Ben benim web uygulaması "sahte-çatal" bir süreç (bir e-posta SMTP yoluyla gönderilen) çalışıyorum ve uygulama Kohana üzerine inşa edilmiştir.

    $command = 'test/email';
    exec('php index.php '.$command.' > /dev/null/ &', $errors, $response);

Ben bir hata alıyorum -

Notice: Undefined index: SERVER_NAME

Ben Kohana ait index.php dosyasının içine baktığınızda, ben SERVER_NAME adında bir değişken arıyor görüyoruz, ama ben Kohana bu değeri algılamak ve çalıştırmak için önce onu ayarlamak olamazdı çünkü null geliyor sanırım.

Herhangi bir komut satırı üzerinden çalıştırmak için Kohana nasıl fikir?

6 Cevap

Bildiğim kadarıyla sen nedeniyle önyükleme yöntemleri doğrudan komut satırına Kohana dosyalarını çalıştırmak olamaz.

You could do 2 things: export all command like functions outside kohana and run them independently.

Yapabileceğin başka bir şey için $ denetleyicisi, $ yöntem değişkenleri geçerken sizin kod bulunduğu doğru nesneye biter yüzden Kohana ana klasöründe bulunan index.php yalak çalışıyor:

Kohana 2 için:

php index.php controller/method/var1/var2

Kohana 3

php index.php --uri=controller/method/var1/var2

Edit: Kohana has a great CLI task runner from version 3.3 onward as official module. For version 3.2 it's still an unofficial module. I suggest you use these because they give a lot of extra options on running from CLI:

Kohana3 kaynak koduna bakarak sonra, ben cli için desteği vardır bulundu (system/classes/kohana/cli.php). Sen 3 seçenek (uri, yöntemini, olsun, yazı) geçebilir. Yani: -

$ php index.php --uri="items/list"

Controller_Items olarak list yöntemini çağırır.

Ve Kohana2 sadece php index.php controller/method/param1/param2/etc olduğunu

Kohana CLI üzerinde çalıştırmak hem de web için inşa edilmiştir.

Eğer Kohana 3 kullanıyorsanız o zaman terminalden çalıştırabilirsiniz.

Example

php index.php - Uri=controller/action

Options

  • - Uri
  • - Metod
  • - Olsun
  • - Mesajı

Kohana 3 için, bu docs and source check out.

Ben benzer bir sorunu vardı

Sen ya da kimse index.php dosyasına SERVER_NAME eklediniz mi?

Öyle ya index.php (ve ya bootstrap) dışında kodunu kaldırmak VEYA bir bunu o sarın eğer

if (PHP_SAPI === 'cli') 
{ 
   // ... 
}  else {
 //....
}