После обновления до Laravel 7 php ремесленник не работает - PullRequest
0 голосов
/ 04 марта 2020

после обновления Laravel в соответствии с документами до v7 я запустил composer обновление. Затем я получаю следующее:

Script @ php пакет ремесленника: обнаружение --ansi при обработке события post-autoload-dump, возвращенного с кодом ошибки 255

Это мой composer. json файл:

{
    "name": "laravel/laravel",
    "type": "project",
    "description": "The Laravel Framework.",
    "keywords": [
        "framework",
        "laravel"
    ],
    "license": "MIT",
    "require": {
        "php": "^7.1.3",
        "fideloper/proxy": "^4.0",
        "guzzlehttp/guzzle": "^6.5",
        "kitetail/zttp": "^0.6.0",
        "laravel/framework": "^7.0",
        "laravel/tinker": "^2.0",
        "laravel/telescope": "^2.1",
        "laravelcollective/html": "^6.0",
        "livewire/livewire": "^0.7.4",
        "spatie/laravel-html": "^2.24",
        "spatie/laravel-permission": "^3.0.0"
    },
    "require-dev": {
        "barryvdh/laravel-debugbar": "^3.2",
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "laravel/ui": "^2.0",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^4.1",
        "phpunit/phpunit": "^7.5"
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ]
    }
}

Я сейчас в замешательстве. Даже кажется, что php ремесленник ничего не делает в этом проекте. В других проектах это просто отлично работает. Любая идея, как это можно исправить?

Редактировать: Некоторые ответы предоставили предложения. Я получаю следующее с помощью Laragon:

PS C:\laragon\www\attila> composer update
Updating dependencies (including require-dev)
Package operations: 0 installs, 4 updates, 0 removals
  - Updating laravel/framework (v7.0.1 => v7.0.2): Downloading (100%)
  - Updating spatie/laravel-permission (3.10.1 => 3.11.0): Downloading (100%)
  - Updating laravel/ui (v2.0.0 => v2.0.1): Downloading (100%)
  - Updating nunomaduro/collision (v4.1.1 => v4.1.2): Downloading (100%)
Package moontoast/math is abandoned, you should avoid using it. Use brick/math instead.
Writing lock file
Generating optimized autoload files
> @php artisan package:discover --ansi
Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 255
PS C:\laragon\www\attila> php artisan package:discover --ansi
PS C:\laragon\www\attila>

Ответы [ 5 ]

5 голосов
/ 05 марта 2020

После удаления всего кэша в папках bootstrap & storage/framework, результаты по-прежнему отсутствуют.

Выполнение php artisan --help возвращает некоторые ошибки, это дало мне подсказку, в чем проблема.

После проверки Руководство по обновлению Я решил проблему, для меня это было:

  • Изменения App\Exceptions\Handler Методы
  • Установка require laravel/ui пакет
2 голосов
/ 29 марта 2020

Для меня это была очень простая ошибка и исправление. В соответствующей части документации по обновлению 7.x сказано следующее:

Symfony 5 Связанные обновления Вероятность воздействия: высокая

Laravel 7 использует серию 5.x Symfony компонентов. Некоторые незначительные изменения в вашем приложении необходимы для обеспечения этого обновления.

Во-первых, методы report, render, shouldReport и renderForConsole класса App \ Exceptions \ Handler вашего приложения должны принимать экземпляры интерфейса Throwable вместо Exception экземпляры:

use Throwable;

public function report(Throwable $exception); 
public function shouldReport(Throwable $exception);
public function render($request, Throwable $exception);
public function renderForConsole($output, Throwable $exception);

Соответствующий файл: ./App/Exceptions/Handler.php Изменить: преобразовать экземпляры "Exception" в "Throwable" (поиск и замена в редакторе)

Итак, в основном, как только я внес изменения, «php artisan» снова начал работать. Это включало пакет: команда find в операторе composer. json (и у меня).

Я попытался вернуть его в исключение, и команда ремесленника ничего не могла сделать. Измените вхождения Exception на Throwable, и все работает. (Однако в моем приложении определены только первые две функции.)

Так что стоит обратить внимание на документацию.

1 голос
/ 04 марта 2020

Попробуйте:

cd bootstrap/cache/
rm -rf *.php

Затем composer update снова.

1 голос
/ 04 марта 2020

Вы должны удалить старые файлы (кеш). Эта команда должна работать:

cd bootstrap/cache/
rm -rf *.php
composer update

Если вы работаете с обычным пользователем, добавьте sudo перед каждой командой.

0 голосов
/ 04 марта 2020

После ознакомления с руководством по обновлению в документации некоторые пользователи в чате Laravel Discord помогли мне обновить Symfony 5 Связанные обновления.

Мне пришлось удалить телескоп (которым я не пользуюсь) ) тоже.

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