2014-07-25 31 views
4

我在heroku(官方php buildpack)上的Symfony資產有問題。 我的代碼基於Symfony 2.5和新的3.0文件夾結構,它使用一個本地js和css文件(其餘通過cdn加載)。 這些文件完全按照此處所述加載:http://symfony.com/doc/current/cookbook/assetic/asset_management.htmlHeroku上的Symfony2(官方buildpack) - 如何轉儲資產?

關於開發環境一切都很好,但是當我改變env到prod然後我需要做資產:轉儲強制symfony轉儲我的資產文件到web/css | js文件夾。我在我的本地機器上進行了測試(將env切換爲prod)並且一切正常。問題出在heroku和它的臨時文件系統上:

當我嘗試運行asset-dump -env = prod by composer post-install-cmd時,然後部署成功,但每個請求都以:

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" 

當我部署不assetic應用:轉儲那麼當然我的本地CSS和JS文件不可用:/

也許有一些其他的腳本鉤我可以用它來轉儲我的資產?

任何想法?任何人都成功與資產:轉儲heroku和官方的PHP buildpack?

回答

2

PHP和Symfony的支持已經更新了很多,在過去幾個月,請查看以下鏈接:

什麼是最重要的:

設置SYMFONY_ENV

SYMFONY_ENV的值的環境變量用於CLI命令來定義環境。所以你不必在你的自定義命令中找到像--env=prod這樣的東西。自定義環境自動執行composer.json(如post-install-cmd)的作曲者鉤子。請注意:將其設置爲與dev不同的值。在Heroku上,dev環境可能無法正常工作,因爲未安裝Composer的開發依賴關係(require-dev)。這是由於Heroku上composer install期間的--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的腳本部分下compile鍵:也https://devcenter.heroku.com/articles/php-support#custom-compile-step

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

見。環境取自上述SYMFONY_ENV環境變量。

+0

謝謝,我檢查了幾個鏈接,並關閉了所有我的問題似乎現在修復:> – Freyr