Проблема с CakePHP Shell - PullRequest
       18

Проблема с CakePHP Shell

3 голосов
/ 12 мая 2010

Я только начинаю работать с Cakephp и сталкиваюсь с проблемами. Моя основная библиотека тортов находится в пути d: / libs / cake Мое приложение настроено в папке d: / servers / htdocs / myapp

Я написал тестовую оболочку в d: / servers / htdocs / myapp / vendor / shells


class ReportShell extends Shell {
 var $uses = array('Appt');
 function main() {
  echo $this->Appt->find('first');


 }
}

Когда я пытаюсь запустить этот код из d: / servers / htdocs / myapp, выдает ошибку


Предупреждение: include_once (d: /servers/htdocs/myapp/config/database.php): не удалось открыть поток: нет такого файла или каталога в режиме d: / libs / cake \ libs \ l \ connection_manager.php в строке 23

Предупреждение: include_once (): не удалось открыть 'd: /servers/htdocs/myapp/config/database.php' для включения (include_path = '.; D: \ work \ xampp \ php \ PEAR') в d: /libs/cake\libs\model\connection_manager.php в строке 23

Неустранимая ошибка: ConnectionManager :: getDataSource - несуществующий источник данных по умолчанию в d: / libs / cake \ libs \ model \ connection_manager.php в строке 102


Причина в том, что он пытается найти файл database.php в «d: / servers / htdocs / myapp / config /», и правильный путь - «d: /servers/htdocs/myapp/app/config/database.php». '

Что я здесь не так делаю?

спасибо

Ответы [ 4 ]

3 голосов
/ 12 мая 2010

Мое приложение настроено в папке d: / servers / htdocs / myapp

Нет, каталог приложения (содержащий папку config): D:\servers\htdocs\myapp\app\.

Причина в том, что он пытается найти файл database.php в «d: / servers / htdocs / myapp / config /», а правильный путь - «d: /servers/htdocs/myapp/app/config/database.php». '

Вы находитесь не в том каталоге, поэтому он не может найти конфигурацию вашей базы данных.

Я написал тестовую оболочку в d: / servers / htdocs / myapp / vendor / shells

Переместите оболочку из папки глобальных поставщиков на D:\servers\htdocs\myapp\vendors\shells в папку поставщиков приложения на D:\servers\htdocs\myapp\app\vendors\shells и попробуйте снова.

(Примечание: на самом деле я не уверен, где должна находиться папка глобальных поставщиков, когда у вас есть настройка, в которой каталоги тортов и приложений отделены друг от друга, но вы определенно должны быть в каталоге приложений при выполнении команд и не каталог myapp, который вы используете.)


Если вы добавите D:\libs\cake\console\ в переменную окружения PATH (не забывая закрыть все процессы cmd.exe впоследствии), вы просто сможете выполнить следующее:

D:\servers\htdocs\myapp\app> cake report (из каталога приложения)

В противном случае вам нужно будет ввести полный относительный или абсолютный путь к исполняемому файлу консоли и / или предоставить CakePHP абсолютный путь к каталогу приложения (если вы не в нем):

D:\servers\htdocs\myapp\app> ..\..\..\..\libs\cake\console\cake report

D:\servers\htdocs\myapp\app> \libs\cake\console\cake report

D:\libs\cake\console> cake -app D:\servers\htdocs\myapp\app report

D:\> libs\cake\console\cake -app D:\servers\htdocs\myapp\app report

и т.д ...

Надеюсь, вы поймете, почему простое добавление правильной папки в PATH делает все намного проще. :)

2 голосов
/ 12 мая 2010

Попробуйте запустить его из каталога /app или с указанным параметром -app:

cake -app d:/servers/htdocs/myapp/app report
1 голос
/ 04 апреля 2013
  • Вы всегда должны быть в пути APP для запуска консоли тортов.

  • Ваш файл оболочки должен быть в ..app / Console / Command /

  • Если ваш файл имеет имя TestShell.php, введите команду app> cake test

1 голос
/ 12 мая 2010

Спасибо. Здесь была проблема Мой сценарий оболочки находился в / myapp / vendor / shells, что было неправильно. Это должно было быть в / myapp / app / vendor / shells. После того как я переместил файл, все заработало. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...