2012-07-19 167 views
3

我創建了一個shell腳本如下運行CakePHP的Shell腳本

<?php 

class EmailShell extends AppShell 
{ 
    public function main() 
    { 
     $this->out('Hello world.'); 
    } 
} 

,當我在命令行中定位到控制檯文件夾並鍵入蛋糕電子郵件我碰到下面的錯誤。

Error: Shell class EmailShell could not be found. 
#0 C:\wamp\www\gitgrow\lib\Cake\Console\ShellDispatcher.php(167): ShellDispatche 
r->_getShell('email') 
#1 C:\wamp\www\gitgrow\lib\Cake\Console\ShellDispatcher.php(69): ShellDispatcher 
->dispatch() 
#2 C:\wamp\www\gitgrow\app\Console\cake.php(33): ShellDispatcher::run(Array) 
#3 {main} 
+0

查看更多:http://stackoverflow.com/questions/10671634/cakephp-shell-shell-class-helloshell-could-not-be-found/26845978#26845978 – 2014-11-10 14:27:13

回答

3

創建用於控制檯的shell。對於這個例子,我們將創建一個簡單的Hello World外殼。在你的應用程序的控制檯/命令目錄下創建EmailShell.php。將下面的代碼裏面:

class EmailShell extends AppShell { 
    public function main() { 
     $this->out('Hello world.'); 
    } 
} 

然後運行這個命令:

Console/cake email 

cake email 
+0

謝謝它的工作。現在運行cron作業時。任何想法我需要運行這個腳本的命令? – 2012-07-19 08:35:41

+0

看到我的答案在下面,還是不夠清楚? – Pyrite 2014-09-12 05:21:32

1

如果你的shell類在正確的位置,那麼它可能是一個問題,蛋糕不知道你的應用程序根在哪裏。您可以使用-app參數指定它。

cake -app ../app email 
+0

我在app/Console文件夾中運行它本身 – 2012-07-19 08:16:52

+0

的路徑也已經設置在windows環境 – 2012-07-19 08:17:13

2

運行它在C:\wamp\www\gitgrow\app\。它應該工作。

cd C:\wamp\www\gitgrow\app 
Console\cake email 
+0

這工作,但這是蛋糕開發人員的一個完全不直觀的選擇。我在Windows上。它在你運行'/ app'文件夾並運行'Console \ cake email'時有效。但是如果你已經**在**控制檯文件夾中並且你運行了'蛋糕電子郵件'它不起作用。這太荒謬了!特別是因爲他們將'Console'文件夾添加到系統路徑。 ?!? – Costa 2012-11-10 00:31:43