2015-04-22 2 views
2

Мое приложение отлично работает локально и работает на Digital Ocean. Но я получаю следующие две альтернативные ошибки развертывания на Laravel Forge.Laravel Forge развернуть ошибки из Composer update

Если я бегу:

composer update --no-dev 
php artisan optimize 

тогда я получаю следующее сообщение об ошибке на Forge:

[RuntimeException] 
The lock file does not contain require-dev information, run install with the --no-dev option or run update to install those packages. 

Если я бегу:

composer update 
php artisan optimize 

тогда я получаю это на Forge:

Loading composer repositories with package information 
Installing dependencies (including require-dev) from lock file 
Nothing to install or update 
Generating autoload files 
PHP Fatal error: Call to undefined method 
Illuminate\Foundation\Application::getCachedCompilePath() in /home/forge/default/vendor/laravel/framework/src/Illuminate/Foundation/Console/ClearCompiledCommand.php on line 28 
PHP Stack trace: 
PHP 1. {main}() /home/forge/default/artisan:0 
PHP 2. Illuminate\Foundation\Console\Kernel->handle() /home/forge/default/artisan:36 
PHP 3. Symfony\Component\Console\Application->run() /home/forge/default/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:94 
PHP 4. Symfony\Component\Console\Application->doRun() /home/forge/default/vendor/symfony/console/Symfony/Component/Console/Application.php:126 
PHP 5. Symfony\Component\Console\Application->doRunCommand() /home/forge/default/vendor/symfony/console/Symfony/Component/Console/Application.php:195 
PHP 6. Illuminate\Console\Command->run() /home/forge/default/vendor/symfony/console/Symfony/Component/Console/Application.php:874 
PHP 7. Symfony\Component\Console\Command\Command->run() /home/forge/default/vendor/laravel/framework/src/Illuminate/Console/Command.php:101 
PHP 8. Illuminate\Console\Command->execute() /home/forge/default/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:257 
PHP 9. Illuminate\Container\Container->call() /home/forge/default/vendor/laravel/framework/src/Illuminate/Console/Command.php:115 
PHP 10. call_user_func_array:{/home/forge/default/storage/framework/compiled.php:925}() /home/forge/default/storage/framework/compiled.php:925 
PHP 11. Illuminate\Foundation\Console\ClearCompiledCommand->fire() /home/forge/default/storage/framework/compiled.php:925 

[Symfony\Component\Debug\Exception\FatalErrorException]        
Call to undefined method Illuminate\Foundation\Application::getCachedCompilePath() 
Script php artisan clear-compiled handling the post-install-cmd event returned with an error 

[RuntimeException 
Error Output: PHP Fatal error: Call to undefined method Illuminate\Foundation\Application::getCachedCompilePath() in /home/forge/default/vendor/laravel/framework/src/Illuminate/Foundation/Console/ClearCompiledCommand.php on line 28 
PHP Stack trace:                                                       
PHP 1. {main}() /home/forge/default/artisan:0                                               
PHP 2. Illuminate\Foundation\Console\Kernel->handle() /home/forge/default/artisan:36                                      
PHP 3. Symfony\Component\Console\Application->run() /home/forge/default/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:94                       
PHP 4. Symfony\Component\Console\Application->doRun() /home/forge/default/vendor/symfony/console/Symfony/Component/Console/Application.php:126                       
PHP 5. Symfony\Component\Console\Application->doRunCommand() /home/forge/default/vendor/symfony/console/Symfony/Component/Console/Application.php:195                     
PHP 6. Illuminate\Console\Command->run() /home/forge/default/vendor/symfony/console/Symfony/Component/Console/Application.php:874                          
PHP 7. Symfony\Component\Console\Command\Command->run() /home/forge/default/vendor/laravel/framework/src/Illuminate/Console/Command.php:101                        
PHP 8. Illuminate\Console\Command->execute() /home/forge/default/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:257                        
PHP 9. Illuminate\Container\Container->call() /home/forge/default/vendor/laravel/framework/src/Illuminate/Console/Command.php:115                          
PHP 10. call_user_func_array:{/home/forge/default/storage/framework/compiled.php:925}() /home/forge/default/storage/framework/compiled.php:925                       
PHP 11. Illuminate\Foundation\Console\ClearCompiledCommand->fire() /home/forge/default/storage/framework/compiled.php:925 

Что я делаю неправильно?

ответ

2

, возможно, самое легкое, что нужно сделать здесь.

  1. в локальной среде разработки проверьте свой файл composer.json для каких-либо элементов в разделе «требуется», которая должна быть в разделе «требует-DEV» и переместить их в случае необходимости
  2. Удалить локальный composer.lock файл
  3. Run композитор установки composer update -vvv
  4. протестировать приложение локально
  5. Когда убедится, что все работает в соответствии с вашими ожиданиями фиксируете файл composer.lock обратно в систему управления версиями и перераспределять приложение на Forge

Если вы продолжаете получать ошибки при развертывании и на сервере ничего не стоит, я бы уничтожал старый экземпляр сервера и создавал новый сервер в Forge. Попробуйте запустить сборку с новым файлом composer.lock, и я уверен, что это поможет вам преодолеть эту проблему. :-D

На другом примечании, которое может помочь, как правило, при развертывании Я буду выступать за composer install по сравнению с composer update на основе. У меня будет проверенная функциональность на основе определенных версий зависимостей, которые записаны в файле composer.lock. Следуя этому подходу, поведение приложения должно быть более предсказуемым. Вы рискуете столкнуться с непредсказуемым поведением, когда вы или одна из ваших зависимостей полагаетесь на библиотеку, которая всегда является последней версией (например, dev-master), поскольку код может меняться очень часто.

Смежные вопросы