Ошибка CakePHP: не удалось найти миграции плагинов

Я установил Плагин миграции CakeDC и попробовал выполнить команду cake Migrations.migration generate, но получил сообщение об ошибке Ошибка: миграция плагина может не найти.

Путь установки плагина app\Plugin\Migrations. Я добавил путь к переменной системной среды D:\xampp\htdocs\myproj\app\Vendor\cakephp\cakephp\lib\Cake\Console, которая является моим установленным каталогом композитора CakePHP, чтобы я мог запускать команду cake глобально.

D:\xampp\htdocs\myproj\app>cake

Welcome to CakePHP v2.5.4 Console
---------------------------------------------------------------
App : app
Path: D:\xampp\htdocs\myproj\app\
---------------------------------------------------------------
Current Paths:

 -app: app
 -working: D:\xampp\htdocs\myproj\app
 -root: D:\xampp\htdocs\myproj
 -core: D:\xampp\htdocs\myproj\app\Vendor\cakephp\cakephp\lib

Changing Paths:

Your working path should be the same as your application path. To change your path use the '-app' param.
Example: -app relative/path/to/myapp or -app /absolute/path/to/myapp

Available Shells:
[CORE] acl, api, bake, command_list, completion, console, i18n, schema, server,test, testsuite, upgrade
[app] demo, send_mail_at_call_time, update_num_order_cache

To run an app or core command, type cake shell_name [args]
To run a plugin command, type cake Plugin.shell_name [args]
To get help on a specific command, type cake shell_name --help

D:\xampp\htdocs\myproj\app>cake Migrations.migration generate

Error: Plugin Migrations could not be found.
#0 D:\xampp\htdocs\myproj\app\Vendor\cakephp\cakephp\lib\Cake\Core\App.php(227):CakePlugin::path('Migrations')
#1 D:\xampp\htdocs\myproj\app\Vendor\cakephp\cakephp\lib\Cake\Core\App.php(549):App::path('Console/Command', 'Migrations')
#2 [internal function]: App::load('MigrationShell')
#3 [internal function]: spl_autoload_call('MigrationShell')
#4 D:\xampp\htdocs\myproj\app\Vendor\cakephp\cakephp\lib\Cake\Console\ShellDispatcher.php(249): class_exists('MigrationShell')
#5 D:\xampp\htdocs\myproj\app\Vendor\cakephp\cakephp\lib\Cake\Console\ShellDispatcher.php(200): ShellDispatcher->_getShell('Migrations.migr...')
#6 D:\xampp\htdocs\myproj\app\Vendor\cakephp\cakephp\lib\Cake\Console\ShellDispatcher.php(66): ShellDispatcher->dispatch()
#7 D:\xampp\htdocs\myproj\app\Vendor\cakephp\cakephp\lib\Cake\Console\cake.php(54): ShellDispatcher::run(Array)
#8 {main}

Я изменил путь на app\Vendor\bin, но все равно получил ошибку:

D:\xampp\htdocs\myproj\app\Vendor\bin>cake Migrations.migration generate

Error: Plugin Migrations could not be found.
#0 D:\xampp\htdocs\myproj\app\Vendor\cakephp\cakephp\lib\Cake\Core\App.php(227):CakePlugin::path('Migrations')
#1 D:\xampp\htdocs\myproj\app\Vendor\cakephp\cakephp\lib\Cake\Core\App.php(549):App::path('Console/Command', 'Migrations')
#2 [internal function]: App::load('MigrationShell')
#3 [internal function]: spl_autoload_call('MigrationShell')
#4 D:\xampp\htdocs\myproj\app\Vendor\cakephp\cakephp\lib\Cake\Console\ShellDispatcher.php(249): class_exists('MigrationShell')
#5 D:\xampp\htdocs\myproj\app\Vendor\cakephp\cakephp\lib\Cake\Console\ShellDispatcher.php(200): ShellDispatcher->_getShell('Migrations.migr...')
#6 D:\xampp\htdocs\myproj\app\Vendor\cakephp\cakephp\lib\Cake\Console\ShellDispatcher.php(66): ShellDispatcher->dispatch()
#7 D:\xampp\htdocs\myproj\app\Vendor\cakephp\cakephp\lib\Cake\Console\cake.php(54): ShellDispatcher::run(Array)
#8 {main}

Опять же, я изменил путь на app\Console, но ошибка отсутствует файл ShellDispatcher.php. Файл существует в глобальном системном пути cake, упомянутом выше, но не существует в app\Console.

D:\xampp\htdocs\myproj\app>cd Console

D:\xampp\htdocs\myproj\app\Console>cake Migrations.migration generate

Warning: include(Cake\Console\ShellDispatcher.php): failed to open stream: No su
ch file or directory in D:\xampp\htdocs\myproj\app\Console\cake.php on line 28

Warning: include(): Failed opening 'Cake\Console\ShellDispatcher.php' for inclusion (include_path='D:\xampp\htdocs\myproj\lib;.;D:\xampp\php\PEAR') in D:\xampp\htdocs\myproj\app\Console\cake.php on line 28

Fatal error: Could not locate CakePHP core files. in D:\xampp\htdocs\myproj\app\Console\cake.php on line 29

[Редактировать]

У меня есть два плагина в app\Plugin:

app\
 |--Plugin\
    |-- Migrations
    |-- Qdmail

У меня есть CakePlugin::loadAll() в app\Config\bootstrap.php, и я пробовал это:

CakePlugin::loadAll();
var_dump(CakePlugin::loaded('Migrations'));
var_dump(CakePlugin::loaded('Qdmail'));

Первая строка возвращает false, а вторая строка возвращает true. Вероятно, плагин миграции не может быть загружен должным образом.


person Sithu    schedule 23.09.2014    source источник


Ответы (2)


Загрузив плагин с помощью CakePlugin::load() в bootstrap.php, я решил свою проблему, но я не знаю, почему CakePlugin::loadAll() не загружает его.

CakePlugin::loadAll();
CakePlugin::load('Migrations');
person Sithu    schedule 24.09.2014

CakePlugin::loadAll() загружает все плагины. Так что я предполагаю, что причиной является Кэш. Если вы удалите кэш, CakePlugin::loadAll() сможет загрузить все плагины.

person Yuzuru Suzuki    schedule 30.06.2015