2012-07-19 205 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