Laravel 5 Class 'Collective\Html\HtmlServiceProvider' не найден на AWS

Я знаю, что есть масса других вопросов, которые плавают вокруг с той же ошибкой, например: Класс 'Illuminate\Html\HtmlServiceProvider' не найден Laravel 5

Моя проблема в том, что я выполнил все предложенные шаги, чтобы решить эту проблему на моем локальном (XAMPP), и исправил ее без заминок. Проблема заключается в том, когда я пошел на развертывание в мой AWS ubuntu (nginx). Я выполнил все обычные инструкции: http://laravelcollective.com/docs/5.1/html#installation

Мои поставщики и псевдонимы были добавлены, когда я сделал git pull из того, что я нажал из моего локального. Возможно, этот файл должен быть gitignored, а изменение сделано вручную на сервере?

Next, add your new provider to the providers array of config/app.php:

  'providers' => [
    // ...
    Collective\Html\HtmlServiceProvider::class,
    // ...
  ],

Finally, add two class aliases to the aliases array of config/app.php:

  'aliases' => [
    // ...
      'Form' => Collective\Html\FormFacade::class,
      'Html' => Collective\Html\HtmlFacade::class,
    // ...
  ],

Затем я добавил вручную:

Begin by installing this package through Composer. Edit your project composer.json file to require laravelcollective/html.

"require": {
    "laravelcollective/html": "5.1.*"
}

И наконец, я побежал:

composer.phar update

Выполнялась эта команда, которая выдает ошибку:

PHP Warning:  Module 'mcrypt' already loaded in Unknown on line 0
> php artisan clear-compiled
PHP Warning:  Module 'mcrypt' already loaded in Unknown on line 0
PHP Fatal error:  Class 'Collective\Html\HtmlServiceProvider' not found in /usr/share/nginx/html/cbt/vendor/compiled.php on line 6



  [Symfony\Component\Debug\Exception\FatalErrorException]
  Class 'Collective\Html\HtmlServiceProvider' not found



Script php artisan clear-compiled handling the pre-update-cmd event returned with an error



  [RuntimeException]
  Error Output: PHP Warning:  Module 'mcrypt' already loaded in Unknown on line 0
  PHP Fatal error:  Class 'Collective\Html\HtmlServiceProvider' not found in /usr/share/nginx/html/cbt/vendor/compiled.php on line



update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--lock] [--no-plugins] [--no-custom-installers] [--no-auties] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [packages1] ...

Затем я попробовал запустить php artisan с явным компилятором, чтобы убедиться, что это что-то сделало, и получил:

PHP Warning:  Module 'mcrypt' already loaded in Unknown on line 0
PHP Fatal error:  Class 'Collective\Html\HtmlServiceProvider' not found in /usr/share/nginx/html/cbt/vendor/compiled.php on line 6716



  [Symfony\Component\Debug\Exception\FatalErrorException]
  Class 'Collective\Html\HtmlServiceProvider' not found

Я знаю, что моя nginx-среда ubuntu не совпадает с окном xampp env, но я по-прежнему не уверен, почему после инструкций Laravel, которые могут быть добавлены, это не работает. Был бы очень признателен за некоторые советы по этому поводу.

Ура!

Ответ 1

Когда вы обновляете свой композитор, он проверяет поставщиков. Поскольку вы не установили laravelcollective/html, но он не может найти его и выдает ошибку:

Итак, сначала требуйте свои пакеты, а затем добавьте их в файл конфигурации.

Вы также можете работать с composer require laravelcollective/html, он автоматически добавит его в json файл. Тогда не имеет значения, добавили ли вы их раньше или нет, потому что файл конфигурации не будет проверен.

Ответ 2

Я столкнулся с той же ошибкой в ​​Laravel 5.2. *, следуя инструкциям здесь: https://laravelcollective.com/docs/5.2/html, но не работал.

Другой способ исправить это, на вашем CLI, запустить:

$composer dump-autoload

Затем запустите:

$composer update

Это работает для меня.;)

Ответ 3

Если вы используете Laravel 5.2, попробуйте добавить его к вашему composer.json

"require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.2.*",
    "laravelcollective/html": "^5.2",
    ... 
},