我在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示例中使用的文件夹)之间的区别配置)
我的猜测是apache配置中的/app/www
文件夹正在访问~/www
(因此访问/srv/code
)但我必须遗漏一些内容。
答案 0 :(得分: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
的符号链接,用于简化路径,并与其他buildpack和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>
我希望我能覆盖你所有的情况并清理情况?!
答案 1 :(得分: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"
],
...
},
...
}