【问题标题】:Use Composer $COMPOSER_VENDOR_DIR in autoload filepath在自动加载文件路径中使用 Composer $COMPOSER_VENDOR_DIR
【发布时间】:2018-02-16 21:08:53
【问题描述】:

我正在将 Symfony 用于 Dockerized 应用程序。我需要移动我的作曲家供应商目录,所以我确实将环境变量 $COMPOSER_VENDOR_DIR 设置为 /root/app-vendors。

供应商已正确定位到此目录,但它会导致 Symfony VarDump 组件出现问题。默认情况下,在 Symfony 2 中,它是像这样从作曲家加载的:

"autoload-dev": {
        "files": [
          "vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php"
        ]
    }

在我的情况下,这条路是错误的。 我想做这样的事情:

"autoload-dev": {
        "files": [
            "{$COMPOSER_VENDOR_DIR}/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php"
        ]
    },

但我在 composer 文档中没有看到任何关于在 composer.json 文件路径中使用环境变量的内容。

我想在开发模式下移动供应商,但如果 $COMPOSER_VENDOR_DIR 未设置,我希望它们位于默认位置;所以 我不能 像这样将绝对文件路径放在 autoload-dev 部分:

"autoload-dev": {
        "files": [
            "/root/app-vendors/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php"
        ]
    },

【问题讨论】:

    标签: symfony composer-php


    【解决方案1】:

    退后几天后的简单解决方案:

    app/dump.php

    上创建此文件
    <?php
    
    $vendorsDir = (getenv('COMPOSER_VENDOR_DIR') !== false)
        ? getenv('COMPOSER_VENDOR_DIR') : __DIR__.'/../vendor';
    
    require  "$vendorsDir/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php";
    

    然后自动加载这个文件而不是 Symfony 文件

    "autoload-dev": {
            "files": [
                "app/dump.php"
            ]
        },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 2020-08-07
      • 1970-01-01
      • 2012-09-30
      • 1970-01-01
      • 2012-08-27
      • 2019-10-30
      相关资源
      最近更新 更多