Почему ошибка установки L5-Swagger в приложении laravel 6? - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть laravel 6 backind rest api app, и я хочу создать документы Swagger для добавления. Я нашел https://github.com/DarkaOnLine/L5-Swagger плагин, который, я полагаю, мог бы использовать полезное создание документов Swagger Но я столкнулся с ошибкой публикации конфигурации. Я полагаю, мне действительно нужен этот шаг.

$ php artisan --version
Laravel Framework 6.13.1
serge@athoe:/mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI$ composer require "darkaonline/l5-swagger"
Using version ^6.0 for darkaonline/l5-swagger
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 5 installs, 0 updates, 0 removals
  - Installing symfony/yaml (v4.4.4): Downloading (100%)         
  - Installing swagger-api/swagger-ui (v3.25.0): Downloading (100%)         
  - Installing doctrine/annotations (v1.8.0): Downloading (100%)         
  - Installing zircote/swagger-php (3.0.3): Downloading (100%)         
  - Installing darkaonline/l5-swagger (6.0.3): Downloading (100%)         
darkaonline/l5-swagger suggests installing zircote/swagger-php:~2.0 (!!! Require Swagger-PHP ~2.0 for @SWG annotations support !!!)
Package anahkiasen/underscore-php is abandoned, you should avoid using it. No replacement was suggested.
Writing lock file
Generating optimized autoload files
Warning: Ambiguous class resolution, "App\library\ChunkReadFilter" was found in both "/mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/app/library/importBoxRooms.php" and "/mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/app/library/importTasks.php", the first will be used.
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: barryvdh/laravel-cors
Discovered Package: barryvdh/laravel-ide-helper
Discovered Package: beyondcode/laravel-dump-server
Discovered Package: cviebrock/eloquent-sluggable
Discovered Package: darkaonline/l5-swagger
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: intervention/image
Discovered Package: laravel/tinker
Discovered Package: laravolt/avatar
Discovered Package: maatwebsite/excel
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Discovered Package: orangehill/iseed
Discovered Package: spatie/laravel-activitylog
Discovered Package: spatie/laravel-image-optimizer
Discovered Package: tymon/jwt-auth
Package manifest generated successfully.
serge@athoe:/mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI$ php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider"
Copied File [/vendor/darkaonline/l5-swagger/config/l5-swagger.php] To [/config/l5-swagger.php]                                                                                                                         

   League\Flysystem\Exception  : Impossible to create the root directory "".                                                                                                                                           

  at /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/league/flysystem/src/Adapter/Local.php:112                                                                                                                       
    108|             clearstatcache(false, $root);                                                                                                                                                                     
    109|                                                                                                                                                                                                               
    110|             if ( ! is_dir($root)) {                                                                                                                                                                           
    111|                 $errorMessage = isset($mkdirError['message']) ? $mkdirError['message'] : '';                                                                                                                  
  > 112|                 throw new Exception(sprintf('Impossible to create the root directory "%s". %s', $root, $errorMessage));                                                                                       
    113|             }
    114|         }
    115|     }
    116| 

  Exception trace:

  1   League\Flysystem\Adapter\Local::ensureDirectory()
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/league/flysystem/src/Adapter/Local.php:78

  2   League\Flysystem\Adapter\Local::__construct()
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Foundation/Console/VendorPublishCommand.php:235

  Please use the argument -v to see more details.
serge@athoe:/mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI$ php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider" -v

   League\Flysystem\Exception  : Impossible to create the root directory "". 

  at /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/league/flysystem/src/Adapter/Local.php:112
    108|             clearstatcache(false, $root);
    109| 
    110|             if ( ! is_dir($root)) {
    111|                 $errorMessage = isset($mkdirError['message']) ? $mkdirError['message'] : '';
  > 112|                 throw new Exception(sprintf('Impossible to create the root directory "%s". %s', $root, $errorMessage));
    113|             }
    114|         }
    115|     }
    116| 

  Exception trace:

  1   League\Flysystem\Adapter\Local::ensureDirectory()
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/league/flysystem/src/Adapter/Local.php:78

  2   League\Flysystem\Adapter\Local::__construct()
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Foundation/Console/VendorPublishCommand.php:235

  3   Illuminate\Foundation\Console\VendorPublishCommand::publishDirectory("/mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/darkaonline/l5-swagger/src/../resources/views")
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Foundation/Console/VendorPublishCommand.php:200

  4   Illuminate\Foundation\Console\VendorPublishCommand::publishItem("/mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/darkaonline/l5-swagger/src/../resources/views")
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Foundation/Console/VendorPublishCommand.php:163

  5   Illuminate\Foundation\Console\VendorPublishCommand::publishTag()
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Foundation/Console/VendorPublishCommand.php:76

  6   Illuminate\Foundation\Console\VendorPublishCommand::handle()
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:32

  7   call_user_func_array([])
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:32

  8   Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Container/Util.php:36

  9   Illuminate\Container\Util::unwrapIfClosure(Object(Closure))
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:90

  10  Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Object(Closure))
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:34

  11  Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), [])
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Container/Container.php:590

  12  Illuminate\Container\Container::call()
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Console/Command.php:201

  13  Illuminate\Console\Command::execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/symfony/console/Command/Command.php:255

  14  Symfony\Component\Console\Command\Command::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Console/Command.php:188

  15  Illuminate\Console\Command::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/symfony/console/Application.php:1012

  16  Symfony\Component\Console\Application::doRunCommand(Object(Illuminate\Foundation\Console\VendorPublishCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/symfony/console/Application.php:272

  17  Symfony\Component\Console\Application::doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/symfony/console/Application.php:148

  18  Symfony\Component\Console\Application::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Console/Application.php:93

  19  Illuminate\Console\Application::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:131

  20  Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/artisan:37

Поиск в Google для решения Я попытался запустить:

chown -R www-data:root .

Но это не помогло.

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

Как это исправить?

Спасибо!

1 Ответ

1 голос
/ 15 февраля 2020

Насколько я вижу из вашей трассировки стека, команда не может создать каталог представлений (./resources/views/vendor/l5-swagger).

Примечание: chown -R www-data:root . - эта команда может создать некоторые новые проблемы ..

После этой команды владельцем является www-data (но вы запускаете команды ремесленника как serge).

После этой команды группа является root (но serge может не входить в эту группу).

Вы должны убедиться, что ваш пользователь (serge) имеет надлежащие разрешения там (./resources/views, ./resources/views/vendor).

Для проверки текущих разрешений выполните: ls -la ./resources, ls -la ./resources/views и ls -la ./resources/views/vendor (если поставщик уже существует)

Возможно, вам нужно что-то вроде: sudo chmod -R serge.www-data (serge - владелец, www-data - группа)

Однако, это в основном зависит от ваших настроек c и желаемого результата.

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