服务提供商阻止工匠每次在作曲家更新时进行优化

时间:2016-07-20 11:28:17

标签: laravel composer-php laravel-5.2

我将一些更改推送到我们的仓库并将其自动部署到Forge。部署失败,出现此错误:

> Illuminate\Foundation\ComposerScripts::postInstall
> php artisan optimize


  [Symfony\Component\Debug\Exception\FatalThrowableError]    
  Class 'MyRepo\MyPackage\MyServiceProvider' not found  


Script php artisan optimize handling the post-install-cmd event returned with error code 1

因此,我编辑了config/app.php文件以临时注释掉该服务提供商行,然后这次composer update重新运行artisan optimize而没有任何问题。

然后我取消注释服务提供商行并再次运行artisan optimize以确保一切正常并且没有错误。

因为在这个作曲家更新后,Forge上的composer.lock文件发生了变化,所以我把它推到了回购。

这为同一服务提供商触发了另一个artisan optimize错误。所以我重复了上面的步骤。

现在每次来自回购的新部署,artisan optimize会触发该服务提供商上的错误,即使我们没有添加新的服务提供商

如果我只是运行composer update,那么我马上回来时会遇到与以前相同的artisan optimize错误。

尝试composer clear-cache,但没有解决它。

我运行了一个测试脚本,通过调用它加载的类来确保服务提供程序正在按预期工作和自动加载,因此我已经验证了PSR-4命名空间的工作正常。

这是我的项目composer.json:

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": [
        "framework",
        "laravel"
    ],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=7.0.0",
        "laravel/framework": "5.2.*",
        "laravel/cashier": "~6.0",
        "my-repo/my-package": "dev-master"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.6",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~5",
        "phpunit/phpunit-mock-objects": "3.2.*@dev"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php"
        ]
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "scripts": {
        "post-root-package-install": [
            "php -r \"copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postInstall",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
            "php artisan optimize"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "repositories": [
        {
            "type": "git",
            "url": "git@bitbucket.org:my-repo/my-package.git"
        }
    ]
}

这是我们的私人包#composer.json:

{
    "name": "my-repo/my-package",
    "description": "My package.",
    "type": "package",
    "require": {
        "php": ">=5.5.9",
        "illuminate/support": "5.2.*"
    },
    "require-dev": {
        "raveren/kint": "~1"
    },
    "autoload": {
        "psr-4": {
            "MyRepo\\MyPackage\\": "src/"
        },
        "files": [
            "src/MyPackage/helpers.php"
        ]
    },
    "minimum-stability": "dev",
    "prefer-stable": true
}

即使我将项目的composer.json更改为{"type": "path", "url": "./library/my-repo"},我也会遇到同样的错误。

每次运行composer update时,好像优化的类加载器都被清除了私有repo类。

我非常被困在这里。

0 个答案:

没有答案