首页 > 解决方案 > Symfony 部署与 capistrano 抛出“目标目录“web”不存在。” 关于资产安装

问题描述

我有一个 symfony 系统,我正在尝试使用 capistrano 部署它。连接是通过 ssh 进行的。

引发错误的函数是 symfony:assets:install,如下所示:

php /var/www/xx/releases/20200415083534/app/console assets:install web --symlink

它抛出以下错误

[InvalidArgumentException]                  
  The target directory "web" does not exist. 

正如您所期望的那样,该文件夹就在那里——我的用户是所有者并且拥有它的权利。如果我转到这个确切的文件夹 /20200415083534 并运行与上面相同的脚本,它会按预期安装资产。

作曲家额外看起来像这样:

"extra": {
    "symfony-app-dir": "app",
    "symfony-web-dir": "web",
    "symfony-assets-install": "relative",
    "incenteev-parameters": [
      {
        "file": "app/config/parameters.yml"
      },
      {
        "file": "app/config/parameters_prod.yml",
        "dist-file": "app/config/parameters_prod.yml.dist"
      }
    ],
    "branch-alias": {
      "dev-master": "2.8.*"
    }
  }

有任何想法吗?

PS我已经检查了这个 “assets:install”命令失败,错误“目标目录“web”不存在”,为什么? 因为它有相同的错误,但情况不同,他的解决方案不适用于我的情况。

标签: symfonydeploymentservercomposer-phpcapistrano

解决方案


听起来可能有点愚蠢,但我确实通过在 deploy.rb 文件的控制台应用程序路径中添加一个空格解决了这个问题。(我认为问题出在其他地方,但这种解决方法在我的情况下做到了)它看起来像:

set :symfony_console_path, " app/console"

现在。

这已将命令行更改为:

php /var/www/xx/releases/20200415083534/ app/console assets:install web --symlink

这确实按预期执行。

希望这可以帮助有人在这个问题上猛烈抨击(就像我几天所做的那样)。


推荐阅读