symfony - Composer 找不到我安装的包

标签 symfony composer-php

我在私有(private) github 存储库中有一个包。

当我运行composer require my_vendor/my_package时,包会添加到composer.json并显示在供应商目录中。

当我运行 composer remove my_vendor/my_package 时,它会给我一个警告:

Package "my_vendor/my_package" listed for update is not installed. Ignoring.

所以当我运行composer禁止my_vendor/my_package时它说

Could not find package "my_vendor/my_package" in your project

如果我运行composer show(在需要包之后),它不会显示在列表中。

此包有一个依赖项(lexik/authenticationbundle),该依赖项已正确安装、删除并显示在已安装包列表中(但未在 TreeView 中列出,因为它是不存在的包的依赖项)...

我不知道如何解释这种行为。

有什么建议吗?

编辑(添加composer.json内容)

{
    "type": "project",
    "license": "proprietary",
    "require": {
        "php": "^7.1.3",
        "ext-ctype": "*",
        "ext-iconv": "*",
        "api-platform/api-pack": "^1.1",
        "composer/composer": "^1.6",
        "symfony/console": "^4.1",
        "symfony/flex": "^1.0",
        "symfony/framework-bundle": "^4.1",
        "symfony/lts": "^4@dev",
        "symfony/orm-pack": "^1.0",
        "symfony/web-server-bundle": "^4.1",
        "symfony/yaml": "^4.1"
    },
    "require-dev": {
        "symfony/dotenv": "^4.1"
    },
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/my_repo/my_package.git"
        }
    ],
    "config": {
        "preferred-install": {
            "*": "dist"
        },
        "sort-packages": true
    },
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Tests\\": "tests/"
        }
    },
    "replace": {
        "symfony/polyfill-ctype": "*",
        "symfony/polyfill-iconv": "*",
        "symfony/polyfill-php71": "*",
        "symfony/polyfill-php70": "*",
        "symfony/polyfill-php56": "*"
    },
    "scripts": {
        "auto-scripts": {
            "assets:install %PUBLIC_DIR%": "symfony-cmd",
            "cache:clear": "symfony-cmd"
        },
        "post-install-cmd": [
            "@auto-scripts"
        ],
        "post-package-install": [
            "App\\Utility\\Bootstrap\\Setup::execute",
            "@auto-scripts"
        ],
        "pre-package-uninstall": [
            "App\\Utility\\Bootstrap\\Demolish::execute",
            "@auto-scripts"
        ]
    },
    "conflict": {
        "symfony/symfony": "*"
    },
    "extra": {
        "symfony": {
            "id": "01C1K60FQVPP7FCAC3YB6639RZ",
            "allow-contrib": true
        }
    }
}

此外,创建一个新项目并要求包正确地将其添加到已安装包的列表中,因此删除它可以正常工作。然后我尝试删除锁定文件并运行 Composer 更新,最终我尝试要求/删除它,但没有成功。

最佳答案

看来阻止 Composer 正确配置所需包的是 post-package-install 脚本中的 die()

删除该语句解决了问题。

关于symfony - Composer 找不到我安装的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51158902/

相关文章:

regex - 使用Symfony验证电话号码

jquery - Symfony 和 Composer 组件文件夹

php - Composer 安装的 Amazon AWS SES PHP 类不可用

php - Composer.json 应根据 php 版本使用不同的包版本

php - 全局安装 Composer 以供 laravel 使用?

php - 具有 Composer 依赖的大型项目不断需要修改 json 文件

php - Symfony 2 动态添加字段到用户站点上的表单

postgresql - 将 Symfony 项目连接到 docker 数据库

php - Symfony2 中的 Oauth2

Symfony 4.3 路由问题 - 每个路由都与 urlRedirectAction 匹配