将Symfony 4应用程序部署到Google App Engine时的安全检查器错误

时间:2019-01-25 12:38:22

标签: symfony google-app-engine composer-php

使用gcloud应用程序部署将Symfony 4应用程序部署到Google App Engine(Flex)。

安装依赖项后构建失败:

Step #1: Executing script cache:clear [OK]
Step #1: Executing script assets:install public [OK]
Step #1: Executing script security-checker security:check [KO]
Step #1: [KO]
Step #1: Script security-checker security:check returned with error code 127
Step #1: !! sh: 1: security-checker: not found
Step #1: !! 
Step #1: Script @auto-scripts was called via post-install-cmd
Step #1: error building image: error building stage: waiting for process to exit: exit status 127
Finished Step #1
ERROR

我的作曲家“脚本”看起来像这样:

"scripts": {
    "auto-scripts": {
        "cache:clear": "symfony-cmd",
        "assets:install %PUBLIC_DIR%": "symfony-cmd",
        "security-checker security:check": "script"
    },
    "post-install-cmd": [
        "@auto-scripts"
    ],
    "post-update-cmd": [
        "@auto-scripts"
    ]
}

我在部署前运行了composer更新,并为产品环境预热了缓存。

为什么构建失败?

1 个答案:

答案 0 :(得分:1)

看来您的安全检查设置不正确:

  • 这是相关的配置行:
   "security-checker security:check": "script"
  • 以下是显示相应调用失败的日志行:
Step #1: Executing script security-checker security:check [KO]
Step #1: [KO]
Step #1: Script security-checker security:check returned with error code 127

意味着尝试失败的命令是security-checker security:check。实际的失败原因在下一行中显示:

Step #1: !! sh: 1: security-checker: not found

意味着shell无法找到合适的security-checker可执行文件。可能有多种原因,包括脚本本身或执行环境的问题,例如:

  • 脚本尚未创建
  • 该脚本实际上具有不同的名称
  • 脚本的位置不在执行路径中,因此还需要指定其路径,而不仅仅是文件名(或者脚本的目录需要包含在执行路径中)。

要修复此构建,您可以:

  • 评论/删除相应的配置行
  • 更正配置行,如果它是错误的,例如,如果它与实际环境不匹配
  • 调整环境以使其与配置相匹配(如果该配置被认为对预期用途是正确的)。