Skip to content

Update to v25.11.4 fails with composer error #5930

@bjinthahouse

Description

@bjinthahouse

Describe the Bug

Trying to update my bookstack instance from v25.07.2 to v25.11.4, like I've done a dozen times, with instructions found here.

I'm running bookstack in a lxc container on proxmox based on Debian Trixie, newest Apache version and PHP 8.4 with fpm.

  • git pull origin release works as expected.
  • composer install --no-dev takes forever, which I have thought nothing of, since it's mentioned in the docs, that there are major database changes. This command finishes with an error:
The following exception is caused by a process timeout
Check https://getcomposer.org/doc/06-config.md#process-timeout for details

In Process.php line 1205:
                                                                                                                                                                            
  [Symfony\Component\Process\Exception\ProcessTimedOutException]                                                                                                            
  The process "'/usr/bin/php8.4' -d allow_url_fopen='1' -d disable_functions='' -d memory_limit='-1' artisan package:discover --ansi" exceeded the timeout of 300 seconds.

As the error suggests ( https://getcomposer.org/doc/06-config.md#process-timeout ) I increased the timeout to 15 minutes. With the same outcome.

But the installation seems to continue. So I send php artisan migrate. This fails with SQLSTATE[HY000] [2002] Connection refused (Connection: mysql, SQL: alter table page_revisionsmodifypage_id bigint unsigned not null)

More below.

Steps to Reproduce

  1. Goto install directory
  2. git pull origin release
  3. composer install --no-dev
  4. php artisan migrate

Expected Behaviour

Update goes through as usual.

Screenshots or Additional Context

This is the console output up until the error:

composer install --no-dev -v
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Continue as root/super user [yes]? yes
> pre-install-cmd: @php -r "!file_exists('bootstrap/cache/services.php') || @unlink('bootstrap/cache/services.php');"
Installing dependencies from lock file
Verifying lock file contents can be installed on current platform.
Dependency resolution completed in 0.000 seconds
Package operations: 2 installs, 42 updates, 1 removal
Installs: symfony/polyfill-php85:v1.33.0, symfony/polyfill-php84:v1.33.0
Updates: dasprid/enum:1.0.7, bacon/bacon-qr-code:v3.0.3, dompdf/dompdf:v3.1.4, dragonmantank/cron-expression:v3.6.0, symfony/http-foundation:v7.3.7, symfony/process:v7.3.4, symfony/string:v7.3.4, symfony/service-contracts:v3.6.1, symfony/console:v7.3.6, laravel/prompts:v0.3.8, laravel/serializable-closure:v2.0.7, paragonie/constant_time_encoding:v3.1.3, phpseclib/phpseclib:3.0.47, symfony/css-selector:v7.3.6, symfony/var-dumper:v7.3.5, symfony/routing:v7.3.6, symfony/mime:v7.3.4, symfony/event-dispatcher:v7.3.3, symfony/mailer:v7.3.5, symfony/error-handler:v7.3.6, symfony/http-kernel:v7.3.7, symfony/finder:v7.3.5, brick/math:0.14.1, ramsey/uuid:4.9.1, nunomaduro/termwind:v2.3.3, symfony/translation-contracts:v3.6.1, symfony/translation:v7.3.4, nesbot/carbon:3.10.3, league/uri-interfaces:7.6.0, league/uri:7.6.0, league/flysystem-local:3.30.2, league/flysystem:3.30.2, nette/utils:v4.0.9, nette/schema:v1.3.3, laravel/framework:v12.40.1, laravel/socialite:v5.23.2, nikic/php-parser:v5.6.2, psy/psysh:v0.12.14, laravel/tinker:v2.10.2, aws/aws-sdk-php:3.363.2, league/flysystem-aws-s3-v3:3.30.1, predis/predis:v3.3.0
Removals: webmozart/assert
  - Downloading dasprid/enum (1.0.7)
  - Downloading bacon/bacon-qr-code (v3.0.3)
  - Downloading dompdf/dompdf (v3.1.4)
  - Downloading dragonmantank/cron-expression (v3.6.0)
  - Syncing symfony/http-foundation (v7.3.7) into cache
  - Downloading symfony/process (v7.3.4)
  - Downloading symfony/string (v7.3.4)
  - Downloading symfony/service-contracts (v3.6.1)
  - Downloading symfony/console (v7.3.6)
  - Downloading laravel/prompts (v0.3.8)
  - Downloading laravel/serializable-closure (v2.0.7)
  - Downloading paragonie/constant_time_encoding (v3.1.3)
  - Downloading phpseclib/phpseclib (3.0.47)
  - Downloading symfony/css-selector (v7.3.6)
  - Downloading symfony/var-dumper (v7.3.5)
  - Downloading symfony/routing (v7.3.6)
  - Downloading symfony/polyfill-php85 (v1.33.0)
  - Downloading symfony/polyfill-php84 (v1.33.0)
  - Downloading symfony/mime (v7.3.4)
  - Downloading symfony/event-dispatcher (v7.3.3)
  - Downloading symfony/mailer (v7.3.5)
  - Downloading symfony/error-handler (v7.3.6)
  - Downloading symfony/http-kernel (v7.3.7)
  - Downloading symfony/finder (v7.3.5)
  - Downloading brick/math (0.14.1)
  - Downloading ramsey/uuid (4.9.1)
  - Downloading nunomaduro/termwind (v2.3.3)
  - Downloading symfony/translation-contracts (v3.6.1)
  - Downloading symfony/translation (v7.3.4)
  - Downloading nesbot/carbon (3.10.3)
  - Downloading league/uri-interfaces (7.6.0)
  - Downloading league/uri (7.6.0)
  - Downloading league/flysystem-local (3.30.2)
  - Downloading league/flysystem (3.30.2)
  - Downloading nette/utils (v4.0.9)
  - Downloading nette/schema (v1.3.3)
  - Downloading laravel/framework (v12.40.1)
  - Downloading laravel/socialite (v5.23.2)
  - Downloading nikic/php-parser (v5.6.2)
  - Downloading psy/psysh (v0.12.14)
  - Downloading laravel/tinker (v2.10.2)
  - Downloading aws/aws-sdk-php (3.363.2)
  - Downloading league/flysystem-aws-s3-v3 (3.30.1)
  - Downloading predis/predis (v3.3.0)
  - Removing webmozart/assert (1.11.0)
  - Upgrading dasprid/enum (1.0.6 => 1.0.7): Extracting archive
  - Upgrading bacon/bacon-qr-code (v3.0.1 => v3.0.3): Extracting archive
  - Upgrading dompdf/dompdf (v3.1.0 => v3.1.4): Extracting archive
  - Upgrading dragonmantank/cron-expression (v3.4.0 => v3.6.0): Extracting archive
  - Upgrading symfony/http-foundation (v7.3.2 => v7.3.7): Checking out db488a62f98f7a81d5746f05eea63a74e55bb7c4 from cache
    Pulling in changes:
      db488a62 - Nicolas Grekas: Merge branch '6.4' into 7.3
      b03d11e0 - Nicolas Grekas: Merge branch '5.4' into 6.4
      6379e490 - Nicolas Grekas: Merge branch '6.4' into 7.3
      1ba1d5fe - Nicolas Grekas: [HttpFoundation] Fix parsing hosts and schemes in URLs
      1a0706e8 - Nicolas Grekas: [HttpFoundation] Fix parsing pathinfo with no leading slash
      c8ab9b62 - Nicolas Grekas: Merge branch '6.4' into 7.3
      ee930094 - Dave Long: [HttpFoundation] Allow Request::setFormat() to override predefined formats
      ce31218c - Santiago San Martin: [HttpFoundation] Fix issue where ServerEvent with "0" data is not sent
      c061c7c1 - Nicolas Grekas: Merge branch '6.4' into 7.3
      36924159 - Nicolas Grekas: Fix ord()-related PHP 8.5 deprecations
      79ec7c41 - Christian Flothmann: Merge branch '6.4' into 7.3
      67729f83 - Christian Flothmann: use the empty string instead of null as an array offset
      271459da - Nicolas Grekas: Merge branch '6.4' into 7.3
      e8688810 - Matt Emerson: SQLSRV: Change column type from TEXT to STRING
      7475561e - Nicolas Grekas: Merge branch '6.4' into 7.3
      6bc974c0 - Christian Flothmann: fix session cookie options assertions on PHP 8.5
  - Upgrading symfony/process (v7.3.0 => v7.3.4): Extracting archive
  - Upgrading symfony/string (v7.3.2 => v7.3.4): Extracting archive
  - Upgrading symfony/service-contracts (v3.6.0 => v3.6.1): Extracting archive
  - Upgrading symfony/console (v7.3.2 => v7.3.6): Extracting archive
  - Upgrading laravel/prompts (v0.3.6 => v0.3.8): Extracting archive
  - Upgrading laravel/serializable-closure (v2.0.4 => v2.0.7): Extracting archive
  - Upgrading paragonie/constant_time_encoding (v3.0.0 => v3.1.3): Extracting archive
  - Upgrading phpseclib/phpseclib (3.0.46 => 3.0.47): Extracting archive
  - Upgrading symfony/css-selector (v7.3.0 => v7.3.6): Extracting archive
  - Upgrading symfony/var-dumper (v7.3.2 => v7.3.5): Extracting archive
  - Upgrading symfony/routing (v7.3.2 => v7.3.6): Extracting archive
  - Installing symfony/polyfill-php85 (v1.33.0): Extracting archive
  - Installing symfony/polyfill-php84 (v1.33.0): Extracting archive
  - Upgrading symfony/mime (v7.3.2 => v7.3.4): Extracting archive
  - Upgrading symfony/event-dispatcher (v7.3.0 => v7.3.3): Extracting archive
  - Upgrading symfony/mailer (v7.3.2 => v7.3.5): Extracting archive
  - Upgrading symfony/error-handler (v7.3.2 => v7.3.6): Extracting archive
  - Upgrading symfony/http-kernel (v7.3.2 => v7.3.7): Extracting archive
  - Upgrading symfony/finder (v7.3.2 => v7.3.5): Extracting archive
  - Upgrading brick/math (0.12.3 => 0.14.1): Extracting archive
  - Upgrading ramsey/uuid (4.9.0 => 4.9.1): Extracting archive
  - Upgrading nunomaduro/termwind (v2.3.1 => v2.3.3): Extracting archive
  - Upgrading symfony/translation-contracts (v3.6.0 => v3.6.1): Extracting archive
  - Upgrading symfony/translation (v7.3.2 => v7.3.4): Extracting archive
  - Upgrading nesbot/carbon (3.10.2 => 3.10.3): Extracting archive
  - Upgrading league/uri-interfaces (7.5.0 => 7.6.0): Extracting archive
  - Upgrading league/uri (7.5.1 => 7.6.0): Extracting archive
  - Upgrading league/flysystem-local (3.30.0 => 3.30.2): Extracting archive
  - Upgrading league/flysystem (3.30.0 => 3.30.2): Extracting archive
  - Upgrading nette/utils (v4.0.8 => v4.0.9): Extracting archive
  - Upgrading nette/schema (v1.3.2 => v1.3.3): Extracting archive
  - Upgrading laravel/framework (v11.45.2 => v12.40.1): Extracting archive
  - Upgrading laravel/socialite (v5.23.0 => v5.23.2): Extracting archive
  - Upgrading nikic/php-parser (v5.6.1 => v5.6.2): Extracting archive
  - Upgrading psy/psysh (v0.12.10 => v0.12.14): Extracting archive
  - Upgrading laravel/tinker (v2.10.1 => v2.10.2): Extracting archive
  - Upgrading aws/aws-sdk-php (3.356.6 => 3.363.2): Extracting archive
  - Upgrading league/flysystem-aws-s3-v3 (3.29.0 => 3.30.1): Extracting archive
  - Upgrading predis/predis (v2.4.0 => v3.3.0): Extracting archive
Generating optimized autoload files
> post-autoload-dump: Illuminate\Foundation\ComposerScripts::postAutoloadDump
> post-autoload-dump: @php artisan package:discover --ansi

The following exception is caused by a process timeout
Check https://getcomposer.org/doc/06-config.md#process-timeout for details

In Process.php line 1205:
                                                                                                                                                                            
  [Symfony\Component\Process\Exception\ProcessTimedOutException]                                                                                                            
  The process "'/usr/bin/php8.4' -d allow_url_fopen='1' -d disable_functions='' -d memory_limit='-1' artisan package:discover --ansi" exceeded the timeout of 300 seconds.  
                                                                                                                                                                            

Exception trace:
  at phar:///usr/local/bin/composer/vendor/symfony/process/Process.php:1205
 Symfony\Component\Process\Process->checkTimeout() at phar:///usr/local/bin/composer/vendor/symfony/process/Process.php:437
 Symfony\Component\Process\Process->wait() at phar:///usr/local/bin/composer/vendor/symfony/process/Process.php:255
 Symfony\Component\Process\Process->run() at phar:///usr/local/bin/composer/src/Composer/Util/ProcessExecutor.php:167
 Composer\Util\ProcessExecutor->runProcess() at phar:///usr/local/bin/composer/src/Composer/Util/ProcessExecutor.php:212
 Composer\Util\ProcessExecutor->doExecute() at phar:///usr/local/bin/composer/src/Composer/Util/ProcessExecutor.php:111
 Composer\Util\ProcessExecutor->executeTty() at phar:///usr/local/bin/composer/src/Composer/EventDispatcher/EventDispatcher.php:464
 Composer\EventDispatcher\EventDispatcher->executeTty() at phar:///usr/local/bin/composer/src/Composer/EventDispatcher/EventDispatcher.php:421
 Composer\EventDispatcher\EventDispatcher->doDispatch() at phar:///usr/local/bin/composer/src/Composer/EventDispatcher/EventDispatcher.php:139
 Composer\EventDispatcher\EventDispatcher->dispatchScript() at phar:///usr/local/bin/composer/src/Composer/Autoload/AutoloadGenerator.php:473
 Composer\Autoload\AutoloadGenerator->dump() at phar:///usr/local/bin/composer/src/Composer/Installer.php:362
 Composer\Installer->run() at phar:///usr/local/bin/composer/src/Composer/Command/InstallCommand.php:147
 Composer\Command\InstallCommand->execute() at phar:///usr/local/bin/composer/vendor/symfony/console/Command/Command.php:298
 Symfony\Component\Console\Command\Command->run() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:1040
 Symfony\Component\Console\Application->doRunCommand() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:301
 Symfony\Component\Console\Application->doRun() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:397
 Composer\Console\Application->doRun() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:171
 Symfony\Component\Console\Application->run() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:137
 Composer\Console\Application->run() at phar:///usr/local/bin/composer/bin/composer:98
 require() at /usr/local/bin/composer:29

install [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--dry-run] [--download-only] [--dev] [--no-suggest] [--no-dev] [--no-autoloader] [--no-progress] [--no-install] [--audit] [--audit-format AUDIT-FORMAT] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--apcu-autoloader-prefix APCU-AUTOLOADER-PREFIX] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--] [<packages>...]
php artisan migrate

                                                                                                                                                                                  
                                                                            APPLICATION IN PRODUCTION.                                                                            
                                                                                                                                                                                  

 ┌ Are you sure you want to run this command? ──────────────────┐
 │ Yes                                                          │
 └──────────────────────────────────────────────────────────────┘

   INFO  Running migrations.  

  2025_09_02_111542_remove_unused_columns ............................................................................................ 131.88ms DONE
  2025_09_15_132850_create_entities_table ............................................................................................ 355.63ms DONE
  2025_09_15_134701_migrate_entity_data .............................................................................................. 851.67ms DONE
  2025_09_15_134751_update_entity_relation_columns ..................................................................................... 1m 39s FAIL

In Connection.php line 824:
                                                                                                                                              
  SQLSTATE[HY000] [2002] Connection refused (Connection: mysql, SQL: alter table `page_revisions` modify `page_id` bigint unsigned not null)  
                                                                                                                                              

In Connector.php line 67:
                                             
  SQLSTATE[HY000] [2002] Connection refused  

Browser Details

Probably not relevant: Version 142.0.7444.176 (Official Build) (64-Bit) on Windows 10

Exact BookStack Version

v25.07.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions