php – Heroku上的Symfony2(官方buildpack) – 如何转储资产?

我在heroku上的Symfony资产有问题(官方PHP buildpack).
我的代码基于Symfony 2.5,具有新的3.0文件夹结构,并且它使用一个本地js和css文件(其余的是通过cdn加载的).
完全按照此处所述加载这些文件http://symfony.com/doc/current/cookbook/assetic/asset_management.html.

在开发环境中一切都很好,但是当我将env更改为prod然后我需要做资产:dump强制symfony将我的资产文件转储到web / css | js文件夹中.我在我的本地机器上进行了测试(切换env到prod),一切正常.问题出在heroku及其短暂的文件系统上:

当我尝试运行assetic:dump –env = prod by composer post-install-cmd,然后使用successs部署完成,但每个请求都以:

AH01071: Got error 'PHP message: PHP Fatal error: Uncaught exception
'invalidargumentexception' with message 
'The file "/tmp/build_012d99e7-a14a-4626-afec-3ded3d4baeec/app/config/routing.yml"

当我部署没有资产的应用程序:转储当然我的本地css和js文件不可用:/

也许还有一些其他脚本钩我可以用来转储我的资产?

有任何想法吗?任何成功的资产:在heroku和官方PHP buildpack上转储?

解决方法:

PHP和Symfony的支持在过去几个月中已经进行了很多改进,请查看以下链接

> http://symfony.com/doc/current/cookbook/deployment/heroku.html
> https://devcenter.heroku.com/articles/getting-started-with-php
> https://devcenter.heroku.com/articles/php-support
> https://devcenter.heroku.com/articles/getting-started-with-symfony2

最重要的是:

为SYMFONY_ENV设置环境变量

SYMFONY_ENV的值用于定义CLI命令的环境.因此,您不必在自定义命令中使用–env = prod这样的东西. composer.json的composer钩子(如post-install-cmd)会自动使用定义的环境执行.请注意:将其设置为与dev不同的内容.开发环境在Heroku上可能无法正常工作,因为未安装Composer的dev依赖项(require-dev).这是由于在Heroku上安装作曲家时的–no-dev标志.例如,在Symfony标准版中,SensioGeneratorBundle永远不会安装(如果你没有将它移动到composer.json中的require键),dev环境将无法工作.

/ tmp路径出错

所提到的错误应该已经用https://github.com/symfony/symfony/pull/12784修正了.另见https://github.com/heroku/heroku-buildpack-php/issues/64.

部署期间的自定义命令

像assetic:dump这样的自定义命令可以放在编译键下的composer.json的脚本部分中:

{
    "scripts": {
        "compile": [
          "app/console assetic:dump"
        ]
    }
}

另请参见https://devcenter.heroku.com/articles/php-support#custom-compile-step.环境取自上面提到的SYMFONY_ENV环境变量.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...