Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

finchy70's avatar

Can't deploy to Forge. Composer errors.

In development I have a Laravel 8.24 / PHP 8.0.1 app that works fine and when I composer update it updates fine.

When I deploy to forge from the github repo the deployment fails and errors that seem to relate to composer are in the log.

Thu Jan 21 23:25:24 UTC 2021
From github.com:finchy70/inspect_server
 * branch            main       -> FETCH_HEAD
   c47f784..32ab536  main       -> origin/main
Updating c47f784..32ab536
Fast-forward
 .idea/workspace.xml              |  12 +-
 app/Http/Middleware/Approved.php |   3 +-
 composer.lock                    | 663 ++++++++++++++++++++-------------------
 3 files changed, 343 insertions(+), 335 deletions(-)
Deprecation Notice: Required parameter $path follows optional parameter $schema in phar:///usr/local/bin/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php:62
Deprecation Notice: Required parameter $path follows optional parameter $schema in phar:///usr/local/bin/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php:108
Deprecation Notice: Method ReflectionParameter::getClass() is deprecated in phar:///usr/local/bin/composer/src/Composer/Repository/RepositoryManager.php:130
Deprecation Notice: Method ReflectionParameter::getClass() is deprecated in phar:///usr/local/bin/composer/src/Composer/Repository/RepositoryManager.php:130
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
PHP Fatal error:  Uncaught ArgumentCountError: array_merge() does not accept unknown named parameters in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/DefaultPolicy.php:84
Stack trace:
#0 [internal function]: array_merge()
#1 phar:///usr/local/bin/composer/src/Composer/DependencyResolver/DefaultPolicy.php(84): call_user_func_array()
#2 phar:///usr/local/bin/composer/src/Composer/DependencyResolver/Solver.php(387): Composer\DependencyResolver\DefaultPolicy->selectPreferredPackages()
#3 phar:///usr/local/bin/composer/src/Composer/DependencyResolver/Solver.php(740): Composer\DependencyResolver\Solver->selectAndInstall()
#4 phar:///usr/local/bin/composer/src/Composer/DependencyResolver/Solver.php(231): Composer\DependencyResolver\Solver->runSat()
#5 phar:///usr/local/bin/composer/src/Composer/Installer.php(489): Composer\DependencyResolver\Solver->solve()
#6 phar:///usr/local/bin/composer/src/Composer/Installer.php(232): Composer\Installer->doInstall()
#7 phar:///usr/local/bin/composer/src/Composer/Command/InstallCommand.php(122): Composer\Installer->run()
#8 phar:///usr/local/bin/composer/vendor/symfony/console/Command/Command.php(245): Composer\Command\InstallCommand->execute()
#9 phar:///usr/local/bin/composer/vendor/symfony/console/Application.php(835): Symfony\Component\Console\Command\Command->run()
#10 phar:///usr/local/bin/composer/vendor/symfony/console/Application.php(185): Symfony\Component\Console\Application->doRunCommand()
#11 phar:///usr/local/bin/composer/src/Composer/Console/Application.php(281): Symfony\Component\Console\Application->doRun()
#12 phar:///usr/local/bin/composer/vendor/symfony/console/Application.php(117): Composer\Console\Application->doRun()
#13 phar:///usr/local/bin/composer/src/Composer/Console/Application.php(113): Symfony\Component\Console\Application->run()
#14 phar:///usr/local/bin/composer/bin/composer(61): Composer\Console\Application->run()
#15 /usr/local/bin/composer(24): require('...')
#16 {main}
  thrown in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/DefaultPolicy.php on line 84

Fatal error: Uncaught ArgumentCountError: array_merge() does not accept unknown named parameters in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/DefaultPolicy.php:84
Stack trace:
#0 [internal function]: array_merge()
#1 phar:///usr/local/bin/composer/src/Composer/DependencyResolver/DefaultPolicy.php(84): call_user_func_array()
#2 phar:///usr/local/bin/composer/src/Composer/DependencyResolver/Solver.php(387): Composer\DependencyResolver\DefaultPolicy->selectPreferredPackages()
#3 phar:///usr/local/bin/composer/src/Composer/DependencyResolver/Solver.php(740): Composer\DependencyResolver\Solver->selectAndInstall()
#4 phar:///usr/local/bin/composer/src/Composer/DependencyResolver/Solver.php(231): Composer\DependencyResolver\Solver->runSat()
#5 phar:///usr/local/bin/composer/src/Composer/Installer.php(489): Composer\DependencyResolver\Solver->solve()
#6 phar:///usr/local/bin/composer/src/Composer/Installer.php(232): Composer\Installer->doInstall()
#7 phar:///usr/local/bin/composer/src/Composer/Command/InstallCommand.php(122): Composer\Installer->run()
#8 phar:///usr/local/bin/composer/vendor/symfony/console/Command/Command.php(245): Composer\Command\InstallCommand->execute()
#9 phar:///usr/local/bin/composer/vendor/symfony/console/Application.php(835): Symfony\Component\Console\Command\Command->run()
#10 phar:///usr/local/bin/composer/vendor/symfony/console/Application.php(185): Symfony\Component\Console\Application->doRunCommand()
#11 phar:///usr/local/bin/composer/src/Composer/Console/Application.php(281): Symfony\Component\Console\Application->doRun()
#12 phar:///usr/local/bin/composer/vendor/symfony/console/Application.php(117): Composer\Console\Application->doRun()
#13 phar:///usr/local/bin/composer/src/Composer/Console/Application.php(113): Symfony\Component\Console\Application->run()
#14 phar:///usr/local/bin/composer/bin/composer(61): Composer\Console\Application->run()
#15 /usr/local/bin/composer(24): require('...')
#16 {main}
  thrown in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/DefaultPolicy.php on line 84

I have ssh into forge and tried to composer update directly in the apps directory but get same errors.

Forge site is set as PHP 8 and the installed php8 cli and php8 versions are default.

Please help.

0 likes
9 replies
jlrdw's avatar

Do you have an older composer on local.

Where is the site being deployed to.

Double check if you missed something: https://forge.laravel.com/docs/1.0/sites/deployments.html

This one is obvious:

Deprecation Notice: Required parameter $path follows optional parameter $schema in phar

Parameters with optional values follow ones without optional values in php 8.

Check each error and fix code as needed.

Also in dev, if using PHP 8.0.1, you should have got some Deprecation's as well, I have no idea why you didn't.

finchy70's avatar

In development my macOs and sail php versions are 8.

 paul  ~/code/inspect_server   Test-php8  php -v
PHP 8.0.1 (cli) (built: Jan  8 2021 12:43:54) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.1, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.1, Copyright (c), by Zend Technologies
 paul  ~/code/inspect_server   Test-php8  sail php -v
PHP 8.0.1 (cli) (built: Jan 13 2021 08:22:35) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.1, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.1, Copyright (c), by Zend Technologies

And in production my site on forge is php8. I can run composer update or sail composer update with no errors but Deploying to forge gives the errors above in original post. These errors seem to refer to files on the host. Not sure how I would go about fixing those.

jlrdw's avatar

What are you deploying to, Digital Ocean or another.

jlrdw's avatar

Just as a suggestion, perhaps go over to digitalocean site, and see if there's anything in their documentation or guides which would help explain the problems.

But again if you also had PHP 8 in development, I am curious why you didn't get any warnings.

Also you can check issues on GitHub for forge.

kissmartin's avatar

@finchy70 probably you've already resolved your issue, but anyway ...

I've had the same issue couple of days ago while upgrading old server to PHP8.

The old server was running on composer v1.

After upgrading to composer v2 the error was resolved.

More info on upgrading composer from v1 to v2 on forge can be found https://blog.laravel.com/upgrading-to-composer-v2.

finchy70's avatar

Tried composer self-update on forge via ssh and I get the following errors.

Deprecation Notice: Required parameter $path follows optional parameter $schema in phar:///usr/local/bin/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php:108
Deprecation Notice: Method ReflectionParameter::getClass() is deprecated in phar:///usr/local/bin/composer/src/Composer/Repository/RepositoryManager.php:130
Deprecation Notice: Method ReflectionParameter::getClass() is deprecated in phar:///usr/local/bin/composer/src/Composer/Repository/RepositoryManager.php:130
Updating to version 2.0.9 (stable channel).
   Downloading (100%)         
Deprecation Notice: Function openssl_free_key() is deprecated in phar:///usr/local/bin/composer/src/Composer/Command/SelfUpdateCommand.php:230

                                                                               
  [ErrorException]                                                             
  rename(/home/forge/.cache/composer/composer-temp.phar,/usr/local/bin/compos  
  er): Permission denied                                                       
                                                                               

Also ran composer -V and it's currently at 1.10.1

finchy70's avatar
finchy70
OP
Best Answer
Level 12

I finally fixed this by using the console in the digital ocean droplet and going to home/forge/the-site-in-question and running composer self-update there.

Please or to participate in this conversation.