Отсутствует команда composer / zend: разработка-включить

#php #symfony #zend-framework #composer-php

#php #symfony #zend-framework #композитор-php

Вопрос:

Когда я устанавливаю Zend через composer create-project -n -sdev zendframework/skeleton-application , как указано в основном руководстве Zend, я получаю скелетное приложение, которое, кажется, работает хорошо.

Однако, когда я следую совету этого руководства по использованию composer development-enable , я получаю следующее сообщение:

 [SymfonyComponentConsoleExceptionCommandNotFoundException]  
Command "development-enable" is not defined. 
  

Кто-нибудь может дублировать / исправить эту проблему?

Обычно я бы предположил, что это проблема со значением bash $ PATH, но composer команда сама по себе выполняется просто отлично, поэтому я думаю, что это может быть какая-то другая проблема, специфичная для этой подкоманды — например, где-то отсутствует зависимость.

Вот соответствующая часть руководства, которому я пытаюсь следовать:

https://docs.zendframework.com/tutorials/getting-started/skeleton-application/

(На случай, если это поможет в целях дублирования: версия CLI PHP на моем сервере разработки — 5.4.43. По причинам, которыми я не буду вас утомлять, я не могу обновить этот CLI PHP до более новой версии; основной выпуск, который Apache использует на моем компьютере, — 5.6.)


ПРАВКА 1: Повторный запуск моей установки с использованием composer create-project -s dev zendframework/skeleton-application (как указано в связанном руководстве) по-прежнему приводит к той же проблеме.


ПРАВКА 2: Вот мой ввод / вывод оболочки.

 patrick [~/www/berlin-data]# composer create-project -n -sdev zendframework/skeleton-application
Installing zendframework/skeleton-application (2.3.3)
  - Installing zendframework/skeleton-application (2.3.3)
    Loading from cache

Created project in /home1/patrick/public_html/berlin-data/skeleton-application
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing zendframework/zendxml (1.0.2)
    Loading from cache

  - Installing zendframework/zendframework (2.3.3)
    Loading from cache

zendframework/zendframework suggests installing doctrine/annotations (Doctrine Annotations >=1.0 for annotation features)
zendframework/zendframework suggests installing ircmaxell/random-lib (Fallback random byte generator for ZendMathRand if OpenSSL/Mcrypt extensions are unavailable)
zendframework/zendframework suggests installing ocramius/proxy-manager (ProxyManager 0.5.* to handle lazy initialization of services)
zendframework/zendframework suggests installing zendframework/zendpdf (ZendPdf for creating PDF representations of barcodes)
zendframework/zendframework suggests installing zendframework/zendservice-recaptcha (ZendServiceReCaptcha for rendering ReCaptchas in ZendCaptcha and/or ZendForm)
Writing lock file
Generating autoload files


patrick [~/www/berlin-data]# cd skeleton-application/

patrick [~/www/berlin-data/skeleton-application]# composer development-enable

  [SymfonyComponentConsoleExceptionCommandNotFoundException]  
  Command "development-enable" is not defined.
  

Комментарии:

1. Попробуйте composer "development-enable" заключить разработку в кавычки-включить

2. Хорошее предложение, но это тоже приводит к той же ошибке.

3. Какой CLI вы используете? Windows Powershell? базовый cmd.exe ? Или вы используете какую-то другую систему?

4. Хороший вопрос, Шоссер. Я использую оболочку bash. (Теперь я отредактировал вопрос, чтобы включить эту информацию.)

5. в вашем composer.json в scripts разделе development-enabled определено? Если да, то запускаете ли вы команду composer из корневого каталога проекта, в котором находится composer.json?

Ответ №1:

При запуске команды

 composer create-project -n -sdev zendframework/skeleton-application
  

Это создаст каталог в вашем текущем каталоге с именем skeleton-application внутри этого каталога вам нужно запустить команду:

 composer development-enable
  

Если это все еще не работает, значит, что-то пошло не так в процессе установки.

Первая команда должна выдавать put что-то вроде:

 $ composer create-project -n -sdev zendframework/skeleton-application
Installing zendframework/skeleton-application (dev-master 941da45b407e4f09e264f0                                             00fb537928badb96ed)
  - Installing zendframework/skeleton-application (dev-master master)
    Cloning master from cache

Created project in C:Users<UserName>Documentsskeleton-application
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
  - Installing zendframework/zend-component-installer (0.3.0)
    Downloading: 100%

  - Installing zendframework/zend-stdlib (3.0.1)
    Downloading: 100%
...
  

Обратите внимание на эту строку Created project in C:Users<UserName>Documentsskeleton-application

Это каталог, в котором вы должны находиться, чтобы запустить команду:

 cd C:Users<UserName>Documentsskeleton-application
composer development-enable
  

Если это все еще не сработало, попробуйте указать версию для загрузки:

 composer create-project -n "zendframework/skeleton-application":"dev-master"
  

PS

На момент написания этой статьи для скелетного приложения требуется PHP "^5.6 || ^7.0" . Поэтому, если вы используете более низкую версию, composer не будет устанавливать эту копию. И учебные пособия, основанные на нем, могут работать не так, как ожидалось.

Комментарии:

1. Спасибо. Я добавил некоторую дополнительную информацию к вопросу, показывая особенности того, как это не удается.

2. Похоже, вы получаете старую версию скелетного приложения, которая не была настроена с помощью команды composer, которую вы пытаетесь запустить. Попробуйте очистить кэш вашего composer и снова установить скелетное приложение. composer clear-cache

3. Не повезло. Запуск моей строки установки после, за composer self-update которой composer clear-cache следует, по-прежнему приводит к загрузке версии 2.33. Я даже пытался удалить аргументы -n и -sdev , но безуспешно — моя строка установки по-прежнему заканчивается установкой версии 2.33 Zend. Composer находится на версии 1.2.1 (стабильный канал).

4. @Patrick Я кое-что добавил к своему ответу, чтобы попробовать, composer create-project -n "zendframework/skeleton-application":"dev-master" возможно, явно укажите, какую версию вы хотите, в этом случае я просто использую последнюю версию master.

5. Похоже, Composer отказывается устанавливать скелет Zend из dev-master на мою версию PHP-CLI (которая 5.4.x), даже если я явно запрашиваю версию фреймворка «dev-master». (Composer явно выдает ошибку, в которой говорится, что он не смог найти пакет «в версии, устанавливаемой с использованием вашей версии PHP».) Это ограничение с моей стороны, конечно, не отражается на качестве вашего ответа, который я отмечу как правильный. Спасибо за все время, которое вы потратили на это. Я считаю, что этот ответ сэкономит кому-то много времени в будущем.

Ответ №2:

Я заметил две вещи: при первой инициализации скелетного приложения, в зависимости от ваших настроек, режим разработки включен по умолчанию.

Если вы хотите запустить

 composer development-enable
  

или любые другие подобные команды должны находиться в вашем path/to/install или path/to/yourapp каталоге, чтобы это сработало! Это папка, в которой содержится ваша локальная установка composer. Если вы находитесь в любом из родительских каталогов, команда не будет работать.

Ответ №3:

У меня также возникла похожая проблема при попытке включить режим разработки с помощью команды composer development-enable в моем приложении apigility. Я получал сообщение об ошибке:

zf-development-mode не распознается как внутренняя или внешняя команда.

На веб-сайте apigility есть страница, касающаяся модуля режима разработки: https://apigility.org/documentation/modules/zf-development-mode

Я нашел, следуя инструкции по установке модуля из composer:

 $ composer require zfcampus/zf-development-mode
  

Затем делаем копию конфигурационного файла разработки:

 $ cp vendor/zfcampus/zf-development-mode/development.config.php.dist config/
  

Теперь использование composer development-enable , похоже, работает нормально, что в моем случае вернуло сообщение «Уже в режиме разработки».