Search code examples
laravelherokucomposer-phpdbal

doctrine/dbal not getting installed in Heroku


I am running a Laravel project on Heroku. For running a migration that will change the type of a column I need the doctrine/dbal package installed. I put "doctrine/dbal": "^2.5" line in composer.json in the "require" object.

When I pushed the changes to Heroku it is showing the line.

- Installing doctrine/dbal (v2.5.5)
  Downloading: 100%

Right after that when I ran heroku run composer show doctrine/dbal it is showing.

[InvalidArgumentException]
Package doctrine/dbal not found

I also ran heroku run composer update several times after that. Here is the full log of my commands.

C:\xampp\htdocs\jem\red-arrow (master) ([email protected])
λ heroku run composer update
Running composer update on red-arrow... up, run.9733 (Free)
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Removing symfony/polyfill-mbstring (v1.2.0)
- Installing symfony/polyfill-mbstring (v1.3.0)
    Downloading: 100%

- Removing symfony/var-dumper (v3.1.4)
- Installing symfony/var-dumper (v3.1.8)
    Downloading: 100%

- Removing symfony/translation (v3.1.4)
- Installing symfony/translation (v3.1.8)
    Downloading: 100%

- Removing symfony/routing (v3.1.4)
- Installing symfony/routing (v3.1.8)
    Downloading: 100%

- Removing symfony/process (v3.1.4)
- Installing symfony/process (v3.1.8)
    Downloading: 100%

- Removing symfony/http-foundation (v3.1.4)
- Installing symfony/http-foundation (v3.1.8)
    Downloading: 100%

- Removing symfony/event-dispatcher (v3.1.4)
- Installing symfony/event-dispatcher (v3.2.1)
    Downloading: 100%

- Removing psr/log (1.0.0)
- Installing psr/log (1.0.2)
    Downloading: 100%

- Removing symfony/debug (v3.1.4)
- Installing symfony/debug (v3.1.8)
    Downloading: 100%

- Removing symfony/http-kernel (v3.1.4)
- Installing symfony/http-kernel (v3.1.8)
    Downloading: 100%

- Removing symfony/finder (v3.1.4)
- Installing symfony/finder (v3.1.8)
    Downloading: 100%

- Removing symfony/console (v3.1.4)
- Installing symfony/console (v3.1.8)
    Downloading: 100%

- Removing swiftmailer/swiftmailer (v5.4.3)
- Installing swiftmailer/swiftmailer (v5.4.4)
    Downloading: 100%

- Removing paragonie/random_compat (v2.0.2)
- Installing paragonie/random_compat (v2.0.4)
    Downloading: 100%

- Removing ramsey/uuid (3.5.0)
- Installing ramsey/uuid (3.5.2)
    Downloading: 100%

- Removing nikic/php-parser (v2.1.1)
- Installing nikic/php-parser (v3.0.2)
    Downloading: 100%

- Removing psy/psysh (v0.7.2)
- Installing psy/psysh (v0.8.0)
    Downloading: 100%

- Removing monolog/monolog (1.21.0)
- Installing monolog/monolog (1.22.0)
    Downloading: 100%

- Removing league/flysystem (1.0.27)
- Installing league/flysystem (1.0.32)
    Downloading: 100%

- Removing symfony/polyfill-util (v1.2.0)
- Installing symfony/polyfill-util (v1.3.0)
    Downloading: 100%

- Removing symfony/polyfill-php56 (v1.2.0)
- Installing symfony/polyfill-php56 (v1.3.0)
    Downloading: 100%

- Removing jeremeamia/superclosure (2.2.0)
- Installing jeremeamia/superclosure (2.3.0)
    Downloading: 100%

- Removing classpreloader/classpreloader (3.0.0)
- Installing classpreloader/classpreloader (3.1.0)
    Downloading: 100%

- Removing laravel/framework (v5.3.9)
- Installing laravel/framework (v5.3.28)
    Downloading: 100%

- Installing doctrine/lexer (v1.0.1)
    Downloading: 100%

- Installing doctrine/collections (v1.3.0)
    Downloading: 100%

- Installing doctrine/cache (v1.6.1)
    Downloading: 100%

- Installing doctrine/annotations (v1.3.0)
    Downloading: 100%

- Installing doctrine/common (v2.6.2)
    Downloading: 100%

- Installing doctrine/dbal (v2.5.5)
    Downloading: 100%

- Installing fzaninotto/faker (v1.6.0)
    Downloading: 100%

- Installing hamcrest/hamcrest-php (v1.2.2)
    Downloading: 100%

- Installing mockery/mockery (0.9.6)
    Downloading: 100%

- Installing symfony/yaml (v3.2.1)
    Downloading: 100%

- Installing sebastian/version (2.0.1)
    Downloading: 100%

- Installing sebastian/resource-operations (1.0.0)
    Downloading: 100%

- Installing sebastian/recursion-context (2.0.0)
    Downloading: 100%

- Installing sebastian/object-enumerator (2.0.0)
    Downloading: 100%

- Installing sebastian/global-state (1.1.1)
    Downloading: 100%

- Installing sebastian/exporter (2.0.0)
    Downloading: 100%

- Installing sebastian/environment (2.0.0)
    Downloading: 100%

- Installing sebastian/diff (1.4.1)
    Downloading: 100%

- Installing sebastian/comparator (1.2.2)
    Downloading: 100%

- Installing doctrine/instantiator (1.0.5)
    Downloading: 100%

- Installing phpunit/php-text-template (1.2.1)
    Downloading: 100%

- Installing phpunit/phpunit-mock-objects (3.4.3)
    Downloading: 100%

- Installing phpunit/php-timer (1.0.8)
    Downloading: 100%

- Installing phpunit/php-file-iterator (1.4.2)
    Downloading: 100%

- Installing sebastian/code-unit-reverse-lookup (1.0.0)
    Downloading: 100%

- Installing phpunit/php-token-stream (1.4.9)
    Downloading: 100%

- Installing phpunit/php-code-coverage (4.0.3)
    Downloading: 100%

- Installing webmozart/assert (1.2.0)
    Downloading: 100%

- Installing phpdocumentor/reflection-common (1.0)
    Downloading: 100%

- Installing phpdocumentor/type-resolver (0.2.1)
    Downloading: 100%

- Installing phpdocumentor/reflection-docblock (3.1.1)
    Downloading: 100%

- Installing phpspec/prophecy (v1.6.2)
    Downloading: 100%

- Installing myclabs/deep-copy (1.5.5)
    Downloading: 100%

- Installing phpunit/phpunit (5.7.4)
    Downloading: 100%

- Installing symfony/css-selector (v3.1.8)
    Downloading: 100%

- Installing symfony/dom-crawler (v3.1.8)
    Downloading: 100%

sebastian/global-state suggests installing ext-uopz (*)
phpunit/phpunit-mock-objects suggests installing ext-soap (*)
phpunit/php-code-coverage suggests installing ext-xdebug (>=2.4.0)
phpunit/phpunit suggests installing phpunit/php-invoker (~1.1)
phpunit/phpunit suggests installing ext-xdebug (*)
Writing lock file
Generating autoload files
> Illuminate\Foundation\ComposerScripts::postUpdate
> php artisan optimize
Generating optimized class loader
The compiled class file has been removed.

C:\xampp\htdocs\jem\red-arrow (master) ([email protected])
λ heroku run composer show doctrine/dbal
Running composer show doctrine/dbal on red-arrow... up, run.6084 (Free)


[InvalidArgumentException]
Package doctrine/dbal not found


show [--all] [-i|--installed] [-p|--platform] [-a|--available] [-s|--self] [-N|--name-only] [-P|--path] [-t|--tree] [-l|--latest] [-o|--outdated] [-D|--direct] [--] [<package>] [<version>]

Link to the git repo: https://github.com/Jimut/red-arrow

Link to the Heroku app: http://red-arrow.herokuapp.com/


Solution

  • So, the problem was that the composer.lock wasn't updated before I pushed the repo to Heroku.

    Heroku only runs composer install after a git push which reads the lock file to install packages. And as pointed out by Chris in the comments

    Don't bother running composer update on Heroku. Any changes you make to the local filesystem after your slug is compiled will be lost as soon as your Dyno cycles.

    So the best practice is, after editing composer.json in the local file system always run composer update and then git push.

    I moved "doctrine/dbal": "^2.5" from "require-dev" to "require" and didn't run composer update before pushing, that was the cause of the problem.