Unable to compile php when deploying symfony on heroku

advertisements

For my Symfony app, I deploy on heroku.

If you use heroku, you note that it runs with git, composer, heroku toolbelt ... etc.

To deploy my app, I have to merge my pull-request on the upstream (fork git workflow). So far, there is no problem, everything works correctly. Once I merge my Pull-request,I have to pull the upstream master on a branch then push this branch on heroku with, for example, this command:

git push prod my-branch:master

To explain you more precisely, this is my git remote when I make git remote -v in terminal:

coworker     https://github.com/my-coworker-repo/my-app.git (fetch)
coworker     https://github.com/my-coworker-repo/my-app.git (push)
origin          https://github.com/my-origin-repo/my-app.git (fetch)
origin          https://github.com/my-origin-repo/my-app.git (push)
upstream        https://github.com/my-company-account/my-app.git (fetch)
upstream        https://github.com/my-company-account/my-app.git (push)
prod            https://git.heroku.com/limitless-peak-.....git (fetch)
prod            https://git.heroku.com/limitless-peak-.....git (push)

So when i would like to deploy on heroku with the command git push prod my-branch:master

This error occured:

Counting objects: 41, done. Delta compression using up to 4 threads.

Compressing objects: 100% (15/15), done. Writing objects: 100% (15/15), 1.49 KiB | 0 bytes/s, done. Total 15 (delta 10), reused 0 (delta 0)

remote: Compressing source files... done. remote: Building source: remote: remote: -----> PHP app detected remote: remote: !
WARNING: Your 'composer.json' contains a non-'stable' setting

remote: for 'minimum-stability'. This may cause the installation of

remote: unstable versions of runtimes and extensions during this

deploy.

remote: It is recommended that you always use stability flags instead,

remote: even if you have 'prefer-stable' enabled. For more information, remote: see https://getcomposer.org/doc/01-basic-usage.md#stability

remote:

remote: -----> Bootstrapping...

remote:

remote: gzip: stdin: not in gzip format

remote: tar: Child returned status 1

remote: tar: Error is not recoverable: exiting now

remote: ! Push rejected, failed to compile PHP app.

remote: remote: ! Push failed

remote: Verifying deploy...

remote:

remote: ! Push rejected to my-app.

remote:

To https://git.heroku.com/my-app.git ! [remote rejected] my-branch -> master (pre-receive hook declined) error: impossible de pousser des références vers 'https://git.heroku.com/my-app.git'

If i run a composer update or install into my heroku app heroku run bash -r prod I have a runtime allow memory limit error, but I don't think the probleme comes from this issue! this is the error:

PHP Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 32 bytes) in phar:///app/.heroku/php/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52

Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 32 bytes) in phar:///app/.heroku/php/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52

Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors

This is my composer.json file:

{
    "name": "symfony/framework-standard-edition",
    "license": "MIT",
    "type": "project",
    "description": "The \"Symfony Standard Edition\" distribution",
    "autoload": {
        "psr-4": { "": "src/" }
    },
    "minimum-stability": "alpha",
    "prefer-stable": true,
    "require": {
        "php": "~5.6.0",
        "ext-mbstring": "*",
        "ext-mcrypt": "*",
        "symfony/symfony": "2.7.*",
        "doctrine/orm": "^2.4.8",
        "doctrine/doctrine-bundle": "~1.4",
        "symfony/assetic-bundle": "~2.3",
        "symfony/swiftmailer-bundle": "~2.3",
        "symfony/monolog-bundle": "~2.8",
        "sensio/distribution-bundle": "~4.0",
        "sensio/framework-extra-bundle": "^3.0.2",
        "incenteev/composer-parameter-handler": "~2.0",
        "friendsofsymfony/user-bundle": "~2.0.0",
        "knplabs/doctrine-behaviors": "~1.1",
        "friendsofsymfony/jsrouting-bundle": "^1.5",
        "jms/serializer-bundle": "^1.1",
        "genemu/form-bundle": "2.2.*",
        "elao/web-profiler-extra-bundle" : "~2.3",
        "a2lix/translation-form-bundle": "^2.0",
        "ircmaxell/password-compat": "~1.0",
        "vich/uploader-bundle": "^0.14.0",
        "liip/imagine-bundle": "^1.4",
        "doctrine/data-fixtures": "^1.1",
        "league/geotools": "@stable",
        "winzou/state-machine-bundle": "~0.2.2",
        "doctrine/doctrine-fixtures-bundle": "~2.2",
        "muka/shape-reader": "dev-master",
        "league/csv": "^8.0",
        "ronanguilloux/isocodes": "^2.0",
        "liuggio/excelbundle": "~2.0",
        "presta/sitemap-bundle": "dev-master",
        "liip/doctrine-cache-bundle": "^1.0",
        "evheniy/robots-txt-bundle": "1.*",
        "php-amqplib/rabbitmq-bundle": "^1.9",
        "icicleio/icicle": "^0.9.6"
    },
    "require-dev": {
        "sensio/generator-bundle": "~2.3",
        "heroku/heroku-buildpack-php": "*"
    },
    "scripts": {
        "pre-install-cmd": [
            "BetonDirect\\EntityBundle\\HerokuDatabase::populateEnvironment"
        ],
        "post-install-cmd": [
            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
        ],
        "post-update-cmd": [
            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
        ],
        "compile": [
          "php app/console assetic:dump --no-debug"
        ]
    },
    "config": {
        "bin-dir": "bin"
    },
    "extra": {
        "symfony-app-dir": "app",
        "symfony-web-dir": "web",
        "symfony-assets-install": "hard-copy",
        "incenteev-parameters": {
            "file": "app/config/parameters.yml",
        },
        "branch-alias": {
            "dev-master": "2.7-dev"
        },
        "heroku": {
            "php-config": [
                "date.timezone=Europe/Paris"
            ]
        }
    }
}

Do you know where the problem could be ?

Moreover, I have already put my app with heroku deployment (same method describe as below) with the same configuration, and I have not this error before.

When I go on the heroku log page, I have this:

2016-07-22T15:07:11.164523+00:00 heroku[slug-compiler]: Slug compilation started

And if I go on the heroku build log view I have the same error as the terminal e-g:

-----> PHP app detected
 !     WARNING: Your 'composer.json' contains a non-'stable' setting
       for 'minimum-stability'. This may cause the installation of
       unstable versions of runtimes and extensions during this deploy.
       It is recommended that you always use stability flags instead,
       even if you have 'prefer-stable' enabled. For more information,
       see https://getcomposer.org/doc/01-basic-usage.md#stability
-----> Bootstrapping...
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
 !     Push rejected, failed to compile PHP app.
 !     Push failed


PHP Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 32 bytes) in phar:///app/.heroku/php/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52

Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 32 bytes) in phar:///app/.heroku/php/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52

Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors

The memory limit error is caused by you running composer on the dyno itself. The dynos themselves can have either 512MB or 1GB of RAM, with no swap enabled.

When Heroku processes your Git push, then Composer is actually running on a special, beefier instance with much more resources, so Composer doesn't run out of memory there. For applications with many dependencies, it's totally normal that Composer needs well north of a GB RAM to run.