在 docker linux 上运行 drupal 9.4.8 的 drush 时出错

问题描述 投票:0回答:1

我正在尝试在linux docker上使用drush运行一个drupal项目,这是一个后端项目,我们使用json api连接到前端nextjs。一旦我使用任何 drush 命令,它就会给我这个错误:

[warning] include_once(/var/www/html/docroot/modules/contrib/rest_menu_items/rest_menu_items.module): failed to open stream: No such file or directory Extension.php:147
 [warning] include_once(): Failed opening '/var/www/html/docroot/modules/contrib/rest_menu_items/rest_menu_items.module' for inclusion (include_path='/var/www/html/vendor/pear/archive_tar:/var/www/html/vendor/pear/console_getopt:/var/www/html/vendor/pear/pear-core-minimal/src:/var/www/html/vendor/pear/pear_exception:.:/usr/local/lib/php') Extension.php:147
 [error]  ArgumentCountError: Too few arguments to function Drush\Drupal\Commands\config\ConfigExportCommands::__construct(), 2 passed in /var/www/html/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php on line 262 and exactly 3 expected in Drush\Drupal\Commands\config\ConfigExportCommands->__construct() (line 86 of /var/www/html/vendor/drush/drush/src/Drupal/Commands/config/ConfigExportCommands.php) #0 /var/www/html/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php(262): Drush\Drupal\Commands\config\ConfigExportCommands->__construct(Object(Drupal\Core\Config\ConfigManager), Object(Drupal\Core\Config\CachedStorage))
#1 /var/www/html/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php(176): Drupal\Component\DependencyInjection\Container->createService(Array, 'config.export.c...')
#2 /var/www/html/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php(437): Drupal\Component\DependencyInjection\Container->get('config.export.c...', 3)
#3 /var/www/html/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php(276): Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters(Array)
#4 /var/www/html/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php(176): Drupal\Component\DependencyInjection\Container->createService(Array, 'drush.command.s...')
#5 /var/www/html/vendor/drush/drush/src/Boot/DrupalBoot8.php(280): Drupal\Component\DependencyInjection\Container->get('drush.command.s...')
#6 /var/www/html/vendor/drush/drush/src/Boot/DrupalBoot8.php(246): Drush\Boot\DrupalBoot8->addDrupalModuleDrushCommands(Object(Drush\Boot\BootstrapManager))
#7 /var/www/html/vendor/drush/drush/src/Boot/BootstrapManager.php(293): Drush\Boot\DrupalBoot8->bootstrapDrupalFull(Object(Drush\Boot\BootstrapManager), NULL)
#8 /var/www/html/vendor/drush/drush/src/Boot/BootstrapManager.php(493): Drush\Boot\BootstrapManager->doBootstrap(5, 6, NULL)
#9 /var/www/html/vendor/drush/drush/src/Boot/BootstrapManager.php(427): Drush\Boot\BootstrapManager->bootstrapMax(6)
#10 /var/www/html/vendor/drush/drush/src/Boot/BootstrapManager.php(396): Drush\Boot\BootstrapManager->bootstrapToPhaseIndex(-2, Object(Consolidation\AnnotatedCommand\AnnotationData))
#11 /var/www/html/vendor/drush/drush/src/Boot/BootstrapHook.php(28): Drush\Boot\BootstrapManager->bootstrapToPhase('max', Object(Consolidation\AnnotatedCommand\AnnotationData))
#12 /var/www/html/vendor/consolidation/annotated-command/src/Hooks/Dispatchers/InitializeHookDispatcher.php(44): Drush\Boot\BootstrapHook->initialize(Object(Drush\Symfony\DrushArgvInput), Object(Consolidation\AnnotatedCommand\AnnotationData))
#13 /var/www/html/vendor/consolidation/annotated-command/src/Hooks/Dispatchers/InitializeHookDispatcher.php(36): Consolidation\AnnotatedCommand\Hooks\Dispatchers\InitializeHookDispatcher->doInitializeHook(Object(Drush\Boot\BootstrapHook), Object(Drush\Symfony\DrushArgvInput), Object(Consolidation\AnnotatedCommand\AnnotationData))
#14 /var/www/html/vendor/consolidation/annotated-command/src/Hooks/Dispatchers/InitializeHookDispatcher.php(29): Consolidation\AnnotatedCommand\Hooks\Dispatchers\InitializeHookDispatcher->callInitializeHook(Object(Drush\Boot\BootstrapHook), Object(Drush\Symfony\DrushArgvInput), Object(Consolidation\AnnotatedCommand\AnnotationData))
#15 /var/www/html/vendor/consolidation/annotated-command/src/CommandProcessor.php(145): Consolidation\AnnotatedCommand\Hooks\Dispatchers\InitializeHookDispatcher->initialize(Object(Drush\Symfony\DrushArgvInput), Object(Consolidation\AnnotatedCommand\AnnotationData))
#16 /var/www/html/vendor/consolidation/annotated-command/src/AnnotatedCommand.php(375): Consolidation\AnnotatedCommand\CommandProcessor->initializeHook(Object(Drush\Symfony\DrushArgvInput), Array, Object(Consolidation\AnnotatedCommand\AnnotationData))
#17 /var/www/html/vendor/symfony/console/Command/Command.php(221): Consolidation\AnnotatedCommand\AnnotatedCommand->initialize(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 /var/www/html/vendor/symfony/console/Application.php(1039): Symfony\Component\Console\Command\Command->run(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#19 /var/www/html/vendor/symfony/console/Application.php(275): Symfony\Component\Console\Application->doRunCommand(Object(Consolidation\AnnotatedCommand\AnnotatedCommand), Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 /var/www/html/vendor/symfony/console/Application.php(149): Symfony\Component\Console\Application->doRun(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#21 /var/www/html/vendor/drush/drush/src/Runtime/Runtime.php(118): Symfony\Component\Console\Application->run(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#22 /var/www/html/vendor/drush/drush/src/Runtime/Runtime.php(48): Drush\Runtime\Runtime->doRun(Array, Object(Symfony\Component\Console\Output\ConsoleOutput))
#23 /var/www/html/vendor/drush/drush/drush.php(72): Drush\Runtime\Runtime->run(Array)
#24 /var/www/html/vendor/drush/drush/drush(4): require('/var/www/html/v...')
#25 {main}.
ArgumentCountError: Too few arguments to function Drush\Drupal\Commands\config\ConfigExportCommands::__construct(), 2 passed in /var/www/html/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php on line 262 and exactly 3 expected in /var/www/html/vendor/drush/drush/src/Drupal/Commands/config/ConfigExportCommands.php on line 86 #0 /var/www/html/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php(262): Drush\Drupal\Commands\config\ConfigExportCommands->__construct(Object(Drupal\Core\Config\ConfigManager), Object(Drupal\Core\Config\CachedStorage))
#1 /var/www/html/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php(176): Drupal\Component\DependencyInjection\Container->createService(Array, 'config.export.c...')
#2 /var/www/html/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php(437): Drupal\Component\DependencyInjection\Container->get('config.export.c...', 3)
#3 /var/www/html/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php(276): Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters(Array)
#4 /var/www/html/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php(176): Drupal\Component\DependencyInjection\Container->createService(Array, 'drush.command.s...')
#5 /var/www/html/vendor/drush/drush/src/Boot/DrupalBoot8.php(280): Drupal\Component\DependencyInjection\Container->get('drush.command.s...')
#6 /var/www/html/vendor/drush/drush/src/Boot/DrupalBoot8.php(246): Drush\Boot\DrupalBoot8->addDrupalModuleDrushCommands(Object(Drush\Boot\BootstrapManager))
#7 /var/www/html/vendor/drush/drush/src/Boot/BootstrapManager.php(293): Drush\Boot\DrupalBoot8->bootstrapDrupalFull(Object(Drush\Boot\BootstrapManager), NULL)
#8 /var/www/html/vendor/drush/drush/src/Boot/BootstrapManager.php(493): Drush\Boot\BootstrapManager->doBootstrap(5, 6, NULL)
#9 /var/www/html/vendor/drush/drush/src/Boot/BootstrapManager.php(427): Drush\Boot\BootstrapManager->bootstrapMax(6)
#10 /var/www/html/vendor/drush/drush/src/Boot/BootstrapManager.php(396): Drush\Boot\BootstrapManager->bootstrapToPhaseIndex(-2, Object(Consolidation\AnnotatedCommand\AnnotationData))
#11 /var/www/html/vendor/drush/drush/src/Boot/BootstrapHook.php(28): Drush\Boot\BootstrapManager->bootstrapToPhase('max', Object(Consolidation\AnnotatedCommand\AnnotationData))
#12 /var/www/html/vendor/consolidation/annotated-command/src/Hooks/Dispatchers/InitializeHookDispatcher.php(44): Drush\Boot\BootstrapHook->initialize(Object(Drush\Symfony\DrushArgvInput), Object(Consolidation\AnnotatedCommand\AnnotationData))
#13 /var/www/html/vendor/consolidation/annotated-command/src/Hooks/Dispatchers/InitializeHookDispatcher.php(36): Consolidation\AnnotatedCommand\Hooks\Dispatchers\InitializeHookDispatcher->doInitializeHook(Object(Drush\Boot\BootstrapHook), Object(Drush\Symfony\DrushArgvInput), Object(Consolidation\AnnotatedCommand\AnnotationData))
#14 /var/www/html/vendor/consolidation/annotated-command/src/Hooks/Dispatchers/InitializeHookDispatcher.php(29): Consolidation\AnnotatedCommand\Hooks\Dispatchers\InitializeHookDispatcher->callInitializeHook(Object(Drush\Boot\BootstrapHook), Object(Drush\Symfony\DrushArgvInput), Object(Consolidation\AnnotatedCommand\AnnotationData))
#15 /var/www/html/vendor/consolidation/annotated-command/src/CommandProcessor.php(145): Consolidation\AnnotatedCommand\Hooks\Dispatchers\InitializeHookDispatcher->initialize(Object(Drush\Symfony\DrushArgvInput), Object(Consolidation\AnnotatedCommand\AnnotationData))
#16 /var/www/html/vendor/consolidation/annotated-command/src/AnnotatedCommand.php(375): Consolidation\AnnotatedCommand\CommandProcessor->initializeHook(Object(Drush\Symfony\DrushArgvInput), Array, Object(Consolidation\AnnotatedCommand\AnnotationData))
#17 /var/www/html/vendor/symfony/console/Command/Command.php(221): Consolidation\AnnotatedCommand\AnnotatedCommand->initialize(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 /var/www/html/vendor/symfony/console/Application.php(1039): Symfony\Component\Console\Command\Command->run(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#19 /var/www/html/vendor/symfony/console/Application.php(275): Symfony\Component\Console\Application->doRunCommand(Object(Consolidation\AnnotatedCommand\AnnotatedCommand), Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 /var/www/html/vendor/symfony/console/Application.php(149): Symfony\Component\Console\Application->doRun(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#21 /var/www/html/vendor/drush/drush/src/Runtime/Runtime.php(118): Symfony\Component\Console\Application->run(Object(Drush\Symfony\DrushArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#22 /var/www/html/vendor/drush/drush/src/Runtime/Runtime.php(48): Drush\Runtime\Runtime->doRun(Array, Object(Symfony\Component\Console\Output\ConsoleOutput))
#23 /var/www/html/vendor/drush/drush/drush.php(72): Drush\Runtime\Runtime->run(Array)
#24 /var/www/html/vendor/drush/drush/drush(4): require('/var/www/html/v...')
#25 {main}
ArgumentCountError: Too few arguments to function Drush\Drupal\Commands\config\ConfigExportCommands::__construct(), 2 passed in /var/www/html/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php on line 262 and exactly 3 expected in Drush\Drupal\Commands\config\ConfigExportCommands->__construct() (line 86 of /var/www/html/vendor/drush/drush/src/Drupal/Commands/config/ConfigExportCommands.php).
 [warning] Drush command terminated abnormally.

这是composer.json文件:

"name": "drupal",
    "description": "Project for Drupal 9 projects with a relocated document root",
    "type": "project",
    "license": "GPL-2.0-or-later",
    "homepage": "https://www.drupal.org/project/drupal",
    "support": {
        "docs": "https://www.drupal.org/docs/user_guide/en/index.html",
        "chat": "https://www.drupal.org/node/314178"
    },
    "repositories": [
        {
            "type": "composer",
            "url": "https://packages.drupal.org/8"
        }
    ],
    "require": {
        "composer/installers": "^1.9",
        "cweagans/composer-patches": "^1.7",
        "drupal/acquia_connector": "^4.0",
        "drupal/acquia_search": "^3.1",
        "drupal/admin_toolbar": "^3.2.0",
        "drupal/adminimal_theme": "^1.4",
        "drupal/config_split": "^1.7",
        "drupal/core": "^9.4",
        "drupal/core-composer-scaffold": "^9.4.8",
        "drupal/core-project-message": "^9.4.8",
        "drupal/core-recommended": "^9.4.8",
        "drupal/decoupled_router": "^2.0",
        "drupal/editor_advanced_link": "^1.8",
        "drupal/field_group": "^3.1",
        "drupal/health_check": "^1.3",
        "drupal/improve_line_breaks_filter": "^1.3",
        "drupal/jsonapi_extras": "^3.16",
        "drupal/jsonapi_search_api": "^1.0@RC",
        "drupal/link_attributes": "^1.11",
        "drupal/link_field_autocomplete_filter": "^1.14",
        "drupal/linkit": "^5.0@beta",
        "drupal/menu_link_attributes": "^1.2",
        "drupal/metatag": "^1.15",
        "drupal/miniorange_saml": "^2.21",
        "drupal/mysql56": "^1.0@beta",
        "drupal/onlyone": "^1.10",
        "drupal/openid_connect": "^1.0",
        "drupal/paragraphs": "^1.12",
        "drupal/pathauto": "^1.8",
        "drupal/redirect": "^1.7",
        "drupal/rest_menu_items": "^3.0",
        "drupal/restui": "^1.21",
        "drupal/scheduler": "^1.3",
        "drupal/search_api": "^1.19",
        "drupal/search_api_solr": "^4.1",
        "drupal/simple_menu_icons": "^2.2",
        "drupal/subrequests": "^3.0",
        "drupal/svg_image": "^1.14",
        "drupal/url_redirect": "^2.62",
        "drush/drush": "~10"
    },
    "require-dev": {
        "drupal/core-dev": "^9.4.8"
    },
    "conflict": {
        "drupal/drupal": "*"
    },
    "minimum-stability": "beta",
    "prefer-stable": true,
    "config": {
        "sort-packages": true,
        "allow-plugins": {
            "composer/installers": true,
            "dealerdirect/phpcodesniffer-composer-installer": true,
            "cweagans/composer-patches": true,
            "drupal/core-composer-scaffold": true,
            "drupal/core-project-message": true
        }
    },
    "extra": {
        "drupal-scaffold": {
            "locations": {
                "web-root": "docroot/"
            }
        },
        "installer-paths": {
            "docroot/core": [
                "type:drupal-core"
            ],
            "docroot/libraries/{$name}": [
                "type:drupal-library"
            ],
            "docroot/modules/contrib/{$name}": [
                "type:drupal-module"
            ],
            "docroot/profiles/contrib/{$name}": [
                "type:drupal-profile"
            ],
            "docroot/themes/contrib/{$name}": [
                "type:drupal-theme"
            ],
            "drush/Commands/contrib/{$name}": [
                "type:drupal-drush"
            ],
            "docroot/modules/custom/{$name}": [
                "type:drupal-custom-module"
            ],
            "docroot/profiles/custom/{$name}": [
                "type:drupal-custom-profile"
            ],
            "docroot/themes/custom/{$name}": [
                "type:drupal-custom-theme"
            ]
        },
        "drupal-core-project-message": {
            "include-keys": [
                "homepage",
                "support"
            ],
            "post-create-project-cmd-message": [
                "<bg=blue;fg=white>                                                         </>",
                "<bg=blue;fg=white>  Congratulations, you’ve installed the Drupal codebase  </>",
                "<bg=blue;fg=white>  from the drupal/recommended-project template!          </>",
                "<bg=blue;fg=white>                                                         </>",
                "",
                "<bg=yellow;fg=black>Next steps</>:",
                "  * Install the site: https://www.drupal.org/docs/8/install",
                "  * Read the user guide: https://www.drupal.org/docs/user_guide/en/index.html",
                "  * Get support: https://www.drupal.org/support",
                "  * Get involved with the Drupal community:",
                "      https://www.drupal.org/getting-involved",
                "  * Remove the plugin that prints this message:",
                "      composer remove drupal/core-project-message"
            ]
        },
        "patches": {
            "drupal/subrequests": {
                "Fix issue which give same result for multiple subrequests": "https://www.drupal.org/files/issues/2019-07-18/change_request_type-63049395-09.patch",
                "JSON validator issue": "https://www.drupal.org/files/issues/2019-05-27/3029570-array-not-object.patch",
                "Fix the no candidate token replacement": "patches/token-replacement-issue.patch.txt"
            },
            "drupal/metatag": {
                "Expose metatag through JSON:API": "https://www.drupal.org/files/issues/2020-02-29/2945817-93.patch"
            }
        }
    }
}

该项目托管在 acquia 托管上,该项目在线运行,但登录时出现错误:

在第 262 行的 /mnt/www/html/website/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php 中找不到“Drupal cquia_connector\AuthService” #0 /mnt/www/html/website/docroot /core/lib/Drupal/Component/DependencyInjection/Container.php(176): Drupal\Component\DependencyInjection\Container->createService(Array, 'acquia_connecto...') #1

php docker drupal composer-php drush
1个回答
0
投票

尽管事实上我收到了相同的警告和消息,但在使用 Drush 的不同场景中, 我认为作者的问题和我的问题的解决方法是相同的。

Acquia 使用一些魔法来引导特定于站点的 settings.php 文件。 我认为您正在在 Acquia 云平台上运行 drush。 Acquia 补充说,最好通过以下方式指定 drush 命令的所有参数:

drush --root=/var/www/html/[application].[env]/docroot

但这只是交易的一半) 默认情况下,Acquia 环境变量应在 shell 登录事件上自动设置。以下是其中一些(最关键的):

AH_SITE_GROUP, AH_SITE_ENVIRONMENT

在你和我的案例中,由于某种原因,它们似乎没有设置。

"Drupal\acquia_connector\AuthService" not found in /mnt/www/html/website/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php
日志给出了一个提示,您的项目名为
website
并且可能您没有使用 dev/test/prod 环境。

日志条目

include_once(/var/www/html/docroot/modules/contrib/rest_menu_items)
证实了我的建议,即
AH_SITE_GROUP
没有被采纳,因为路径应该是:/var/www/html/website/docroot/modules/contrib/rest_menu_items

您可以尝试运行 drush 命令吗?

export AH_SITE_GROUP=website;/var/www/html/website/vendor/bin/drush --root=/var/www/html/website/docroot st

注意:如果您使用的是 dev/test/prod,那么也可以导出

AH_SITE_ENVIRONMENT variable

我建议您询问 Acquia 支持人员在哪里配置这些魔法变量,以便为 Drush 自动加载它们。或者,您可以添加此类别名以将 drush 运行到 .bash_aliases 文件中。

可能您可能还需要导出 HOME 变量:

export HOME=/var/www/html/website


我的情况有点不同 - 通过表单提交自定义模块的函数从在后台模式下运行的 shell 脚本生成 drush 命令。

有关我的案例的更多详细信息:https://gist.github.com/vladdancer/4c8ea46d2b63eb4fd89d5e51315e931a

我也想交叉发布https://www.drupal.org/project/config_ignore/issues/3197355问题,因为它有一个非常相似的调试输出:

TypeError: Argument 4 passed to Drush\Drupal\Commands\config\ConfigImportCommands::__construct() must implement interface Drupal\Core\Cache\CacheBackendInterface

但是它们都与实际的 ConfigImport 命令无关。 所以在这里留下交叉链接来帮助人们找到这个解决方案。

让我知道建议的解决方案是否适合您!

© www.soinside.com 2019 - 2024. All rights reserved.