当前位置: 首页 > 知识库问答 >
问题:

Composer包在安装时复制目录

夏博
2023-03-14

我有一个本地依赖,它托管在一个私人Gitlab回购。然而,我很难通过作曲家将其拉入我的项目。

我的composer.json

"require": {
    "crmpicco/GolfBundle": "dev-master"
},
"repositories": [
    {
        "type": "package",
        "package": {
        "name": "crmpicco/GolfBundle",
        "version": "dev-master",
        "source": {
            "url": "https://git.crmpicco.com/rfc1872/golfbundle.git",
            "type": "git",
            "reference": "master"
        },
        "autoload": {
            "psr-4": {
                "crmpicco\\GolfBundle\\": ""
            }
        }
        }
    }
],

当我在供应商目录中查找目录时,当我不期望的时候,目录是双倍的,例如/供应商/crmpicco/GolfBundle/crmpicco/GolfBundle

当我运行作曲家更新crmpicco\GolfBundle时,当Symfony尝试执行缓存时,我会得到以下错误:清除:

Script Sensio\Bundle\分布式Bundle\Composer\ScriptHandler::clearCache处理以异常终止的post-update-cmd事件

[运行时异常]
执行“'cache:clear--no warmup'”命令时出错:

PHP Fatal error:  Uncaught Symfony\Component\Debug\Exception\ClassNotFoundException: Attempted   
  to load class "crmpiccoGolfBundle from namespace "crmpicco\GolfBundle".         
  Did you forget a "use" statement for "crmpicco\GolfBundle\crmpiccoGolfBundle"?   
  in /var/www/crmpicco/symfony/app/AppKernel.php:31   

我在composer.json设置中遗漏了什么/做错了什么?

捆绑目录结构:

/crmpicco
   /GolfBundle
      /Component      
      /DependencyInjection
      crmpiccoGolfBundle.php

捆绑composer.json:

{
  "name": "crmpicco/GolfBundle",
  "type": "library",
  "description": "A Symfony 2 bundle which provides an easy way to handle billing and subscriptions.",
  "license": "MIT", 
  "require": {
    "php": ">=7.0",
    "symfony/config": "~2.8.34",
    "symfony/dependency-injection": "~2.8.34",
    "symfony/http-kernel": "~2.8.34",
  },
  "autoload": {
    "psr-4": {
      "crmpicco\\GolfBundle\\": ""
    }
  },
  "extra": {
    "symfony-app-dir": "app",
    "symfony-web-dir": "web",
    "symfony-assets-install": "relative"
  }
}

共有2个答案

司寇研
2023-03-14

好啊正如我看到的,您的bundle的composer.json中有错误的psr-4自动加载配置,您必须将其更改为以下内容:

"autoload": {
    "psr-4": {
        "crmpicco\\GolfBundle\\": "crmpicco/GolfBundle"
    }
}

另外,如果不想复制dirs,请将bundle的内容移动到根dir,然后不要更改composer.json内容。dir重复,因为Composer基于name属性创建dir结构,在您的情况下,该属性也是crmpicco/GolfBundle

傅志用
2023-03-14

对于包含有效composer.json的存储库,不应使用包类型。此类型是为没有composer.json的包设计的,因此此文件将完全被忽略,与包中的更新相同。

在您的情况下,最好将其定义git

"repositories": [
    {
        "type": "git",
        "url": "https://git.crmpicco.com/rfc1872/golfbundle.git"
    }
],
 类似资料:
  • 我是新的和开始工作的基于项目,但面临一个问题时安装在项目级别(我使用Ide)。 composer安装--无交互--ansi 使用包信息加载composer存储库 从锁文件安装依赖项(包括需要开发) 没有要安装或更新的内容 生成优化的自动加载文件  过程:- 安装composer和wamp服务器 作曲家创建项目laravel/laravel 和项目创建与此错误和没有供应商文件夹创建 安装larave

  • 我在数字海洋中有一个云,它有1GB的内存。我需要安装一个docker, laravel, mysql, nginx环境,我发现laradock并正常安装,但在容器中运行作曲家时,我返回内存限制错误。 运行时出错:composer安装 尝试更改内存时出错。 警告:您的内核不支持交换限制功能,或者cgroup没有挂载。没有交换限制内存。

  • composer runtime install命令用于在你要连接的区块链网络的Hyperledger Fabric peer端上安装Hyperledger Composer运行时。该命令必须在composer network start命令之前运行。 请注意:该--businessNetworkName, -n选项必须包含与打算在Hyperledger Fabric peer上运行的业务网络名称

  • 我试图在Symfony2上安装FOSUserBundle。 尝试在终端中运行此命令时 作曲家更新朋友软件交响乐/用户包 我提出了这个错误: 用包信息加载作曲家存储库更新依赖项(包括要求开发)您的需求无法解析为一组可安装的包。 问题1-symfony/icu v1.2.0需要lib-icu 我读到了关于INTL扩展没有安装正确,所以我按照这些说明,重新启动MAMP,问题仍然存在! 我也使用phpin

  • 我已经创建了作曲家包,composer.json是 现在,当我安装 包,我需要那个作曲家安装所有需要的包: 但它没有安装它。 我尝试作曲家更新,作曲家安装。有人能帮忙吗? C项目omposer.json看起来像 我能做的是,作曲家自动安装所有软件包所需的依赖项????谢谢你的建议。

  • 我正在尝试在我的电脑上运行laravel,但是我很难在我的机器上安装这个资源,下面是linux终端的一点错误 无法创建文件 /var/www/html/composer.phar:fopen(/var/www/html/composer.phar):打开流失败:权限被拒绝下载失败:fopen(/var/www/html/composer.phar):未能打开流:权限被拒绝f写()期望参数1是资源,