Symfony2资产javascript文件在标记与磁盘上具有不同的名称

时间:2014-11-12 22:31:33

标签: symfony twig assetic

我有2个环境......运行MAMP的本地开发环境和我的开发团队共享的LAMP服务器进行测试。这两个环境都使用dev symfony环境(app_dev.php),我们已禁用assetic_controller。在我们的本地设置中,我们始终能够进行更改,运行缓存:清除和资产:转储,并且一切正常。在我们的共享环境(我们使用magellanes进行部署)中,我们最终得到了这个奇怪的场景,其中我们的bundle的公共/ Resources / js中的javascript文件被写入web / js,其文件名不同于生成嵌入它们的HTML。

例如,在树枝模板中有这样的:

{% javascripts '@MyGreatBundle/Resources/public/js/Default/*' %}
        <script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}

html中写的内容是:

<script type="text/javascript" src="/js/60d13ef_part_1_myscript_7.js"></script>

但是在web / js中转储到磁盘的是:

60d13ef_part_1_myscript_6.js

部署步骤(总结)如下:

  • 通过Git Rebase部署
  • 设置Symfony的全局参数
  • 通过Composer安装供应商
  • 缓存清除
  • 资产转储
  • 缓存预热
  • 发布(操作符号链接)
  • 转储APC缓存

那么我做错了什么?即使我在部署后进入并手动清除缓存/运行assetic:dump,问题仍然存在。每隔一段时间我们就会部署它只是工​​作,但大部分都没有。此外,它可靠地工作了一段时间然后停止了。我不知道在哪里寻找追踪问题。

1 个答案:

答案 0 :(得分:0)

这看起来像个错误。我的一个JS文件以大写字母开头,文件在写入HTML时的排序方式与写入磁盘时的排序方式不同。我刚刚提交了以下错误报告。希望这有助于某人:

环境:

  • CentOS 6.5版(最终版)
  • Symfony 2.5
  • PHP 5.3.3

引用整个资产目录时,例如。资源/公共/ JS /默认值:

Ascript.js
bscript.js
cscript.js
像这样:

{% javascripts '@MyGreatBundle/Resources/public/js/Default/*' %}
        <script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}

html中写的内容是:

<script type="text/javascript" src="/js/60d13ef_part_1_Ascript_1.js"></script>
<script type="text/javascript" src="/js/60d13ef_part_1_byscript_2.js"></script>
<script type="text/javascript" src="/js/60d13ef_part_1_cscript_3.js"></script>

但是在web / js中写入磁盘的是:

60d13ef_part_1_bscript_1.js
60d13ef_part_1_cscript_2.js
60d13ef_part_1_Ascript_3.js

所以所有的javascripts 404.将Ascript.js重命名为ascript.js解决了这个问题。