0

我无法在 cloudControl 中显示我生成的资产。在文件夹assetic:dump中创建资产后,/srv/www/code/web但 Apache 没有访问它们。

这是我的 Apache 配置(documentroot.conf):

DocumentRoot /app/www/web

<Directory /app/www/web>
    AllowOverride All
    Options SymlinksIfOwnerMatch
    Order Deny,Allow
    Allow from All
    DirectoryIndex app.php

    FallbackResource /app.php
</Directory>

让 Assetic 工作的正确 Apache 配置是什么?

另外,有人可以解释一下/srv/code~/www(前一个的别名)和/app/www/web (用于 Apache 配置的 cloudControl 示例中的文件夹)之间的区别吗?

我的猜测是/app/wwwapache 配置中的文件夹正在访问~/www(因此,正在访问/srv/code),但我一定遗漏了一些东西。

4

2 回答 2

1

为了更好地了解容器的“内部”,您可以使用 Secure Shell 连接到容器并查看实际的目录结构。( https://www.cloudcontrol.com/dev-center/Platform%20Documentation#secure-shell-ssh )

  • /srv/www/code是您的应用程序代码所在的实际目录
  • /srv/www/www/srv/www/code由于向后兼容性问题,是指向 的符号链接。
  • /app是一个符号链接/srv/www,用于简化路径并与其他构建包和 PaaS 提供程序兼容。
  • ~//srv/www,所以从您的示例~/www指向您的应用程序所在的目录。

如果您的资产位于/srv/www/code/web您应该能够使用:

DocumentRoot /srv/www/code/web

<Directory /srv/www/code/web>
    AllowOverride All
    Options SymlinksIfOwnerMatch
    Order Deny,Allow
    Allow from All
    DirectoryIndex app.php

    FallbackResource /app.php
</Directory>

我希望我涵盖了您的所有情况并可以澄清情况?!

于 2013-12-12T13:14:03.667 回答
0

最后,问题不在配置中使用的文件夹中。两者/srv/www/code/web/app/www/web工作相同(正如他们应该的那样,考虑到/app/www它的别名/srv/www/www是 的别名/srv/www/code,正如@TooAngel 所解释的那样)。

问题出在assetic:dump命令上,由于某种原因,需要在构建过程中调用它。

我已将此添加到composer.json文件中,现在它可以工作了:

{
    ...
    "scripts": {
        "post-install-cmd": [
            "php app/console cache:clear --env=prod",
            "php app/console assets:install --env=prod",
            "php app/console assetic:dump --env=prod"
         ],
         ...
    },
    ...
}
于 2013-12-13T10:10:49.403 回答