0
  • 我有一个位于PluginName/Console/Command/FooShell.phpCakePHP 2.6.3 中的外壳。
  • 我已经CakePlugin::load('PluginName');在我的应用程序中加载了这个插件bootstrap.php
  • 当那个插件在ROOT/app_name/Plugin并且我运行PluginName.foo时,shell 工作
  • 当该插件在ROOT/plugins并且我运行相同的命令时,我收到一个错误

命令:

    C:\xampp\htdocs\site_name\app_name>php Console/cake.php -app app_name PluginName.foo

错误:

    Warning Error: include(C:\xampp\htdocs\site_name\app_name\Plugin\PluginName\Console\Command\FooShell.php): failed to open stream: No such file or directory in [C:\xampp\htdocs\site_name\lib\Cake\Core\App.php, line 547]

    Warning Error: include(): Failed opening 'C:\xampp\htdocs\site_name\app_name\Plugin\PluginName\Console\Command\FooShell.php' for inclusion (include_path='C:\xampp\htdocs\site_name\lib;.;C:\xampp\php\PEAR') in [C:\xampp\htdocs\site_name\lib\Cake\Core\App.php, line 547]

    Error: Shell class FooShell could not be found.
    #0 C:\xampp\htdocs\site_name\lib\Cake\Console\ShellDispatcher.php(200): ShellDispatcher->_getShell('PluginName.back...')
    #1 C:\xampp\htdocs\site_name\lib\Cake\Console\ShellDispatcher.php(66): ShellDispatcher->dispatch()
    #2 C:\xampp\htdocs\site_name\app_name\Console\cake.php(33): ShellDispatcher::run(Array)
    #3 {main}

出于某种原因,CakePHP 在ROOT/plugins提供实际网页时可以使用此插件,但会在控制台中引发错误。

shell 文档插件文档中没有任何内容明确说明在 中使用插件有什么不同,但是插件和文件夹结构文档ROOT/plugins中明显没有讨论如何使用该目录。(我假设因为它暗示你应该以相同的方式实现插件,无论它们在哪个目录中。)

我做错了吗?

4

1 回答 1

1

当它在ROOT/plugins目录中时,您需要像这样加载它ROOT/lib/Cake/bootstrap.php

App::build(array('Plugin' => array(CAKE . DS . 'plugins' . DS)));
CakePlugin::load('<plugin-name>');
于 2015-03-31T21:29:44.190 回答