【问题标题】:"php artisan myCommand" handling the post-install-cmd event returned with error code 1“php artisan myCommand”处理 post-install-cmd 事件返回错误代码 1
【发布时间】:2021-08-07 16:30:24
【问题描述】:

我创建了一个控制台命令,它将根据用户输入自动设置数据库,我在post-install-cmd 中添加了该命令,但是当我运行composer install 命令时它返回error code 1

如果我像php artisan setupDB 这样手动运行命令,它可以工作,我不知道是什么问题。

可能是我在错误的脚本事件中添加了我的命令!

这是我的composer.json 文件的脚本部分。

"scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ],
        "post-install-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
            "php artisan setupDb",
            "php artisan optimize"
        ]
    }

这是错误 SS。

【问题讨论】:

  • 如果您对我的问题投反对票,请至少评论一个原因。
  • 我假设您已经阅读了this part 的文档?你为什么要搞乱composer.json?向我们展示您的routes/console.php 的样子。如果你说只有inspire 命令存在,那么你需要正确地创建你自己的命令。
  • 我投了反对票,因为问题不是很清楚。您需要提供更多详细信息以帮助我们了解问题。正如我所说,您需要包含控制台路由;我们需要查看setupDb 命令的创建位置。我也以同样的理由投票结束了这个问题。
  • 再次,您不需要查看我的 setupDb 命令,因为它是在应用程序的默认控制台文件夹中创建的,无需在控制台路由中定义该命令。这是一个像php artisan setupDb 这样运行的工匠命令。使用作曲家脚本和屏幕截图检查完整问题。所有信息都在那里。

标签: php laravel console composer-php command


【解决方案1】:

问题出在作曲家版本上,因为如果您在 post-install-cmdpre-install-cmd 中运行任何工匠命令,它将运行但某些命令会要求用户输入,就像我在问题中描述的那样 setupDb 将接受用户的输入。

我是如何发现问题的?

我使用了post-autoload-dump 的示例 在这个事件中添加了"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",,我在想对于控制台命令应该有这样的东西。

我尝试在 artisan 命令之前在 post-install-cmd 中添加 Illuminate\Console 并返回它已被当前作曲家版本弃用,所以我将作曲家更新到 v2,然后它就像一个魅力一样工作。

回答

所以答案将是您需要更新作曲家版本才能运行post-install-cmd 自定义命令,例如(setupDb)

"scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ],
        "post-install-cmd": [
            "php artisan setupDb",
            "php artisan optimize"
        ]
    }

它不会返回任何错误,如果有任何命令需要,它也会询问用户的输入。

【讨论】:

    猜你喜欢
    • 2014-08-09
    • 2018-10-10
    • 2023-03-16
    • 2018-11-23
    • 2019-03-29
    • 2016-02-10
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    相关资源
    最近更新 更多