[GH-ISSUE #2044] [Info] Koel pre-compiled archives do not support 32-bit since v7.6.0 #1076

Closed
opened 2026-02-26 02:35:09 +03:00 by kerem · 4 comments
Owner

Originally created by @MichaIng on GitHub (Aug 9, 2025).
Original GitHub issue: https://github.com/koel/koel/issues/2044

root@OdroidXU4:~# runuser -u koel -- php8.4 artisan koel:init -n --no-assets, please wait...
Composer detected issues in your platform:

Your Composer dependencies require a 64-bit build of PHP.

PHP Fatal error:  Uncaught RuntimeException: Composer detected issues in your platform: Your Composer dependencies require a 64-bit build of PHP. in /mnt/dietpi_userdata/koel/vendor/composer/platform_check.php:26
Stack trace:
#0 /mnt/dietpi_userdata/koel/vendor/composer/autoload_real.php(25): require()
#1 /mnt/dietpi_userdata/koel/vendor/autoload.php(22): ComposerAutoloaderInit1990307e9236461f0b1bf37c3a5182ce::getLoader()
#2 /mnt/dietpi_userdata/koel/artisan(10): require('...')
#3 {main}
  thrown in /mnt/dietpi_userdata/koel/vendor/composer/platform_check.php on line 26

It is due to paragonie/sodium_compat since v2: github.com/paragonie/sodium_compat@75d7cd8

Introduced with github.com/koel/koel@7a8573c, hence since Koel v7.6.0.

I do not exactly suggest to change anything about it. But neither docs nor release notes mention it, so I thought it is a good idea to make you aware of it.

Installing dependencies via PHP Composer from source after removing composer.lock resolves it to paragonie/sodium_compat v1.21.1 on a 32-bit system, so nothing requires v2 in particular.

A workaround on a pre-compiled archive it to downgrade paragonie/sodium_compat, but it fails due to composer scripts running artisan as well. Hence the check needs to be temporarily disabled. Composer will regenerate it after the downgrade:

sed -i '/require a 64-bit build of PHP/d' vendor/composer/platform_check.php
composer require 'paragonie/sodium_compat <2'

The step requires PHP intl, hence this in case needs to be installed/enabled first:

  Problem 1
    - saloonphp/xml-wrangler is locked to version v1.4.0 and an update of this package was not requested.
    - azjezz/psl 3.3.0 requires ext-intl * -> it is missing from your system. Install or enable PHP's intl extension.
    - saloonphp/xml-wrangler v1.4.0 requires veewee/xml ^3.1.0 -> satisfiable by veewee/xml[3.3.0].
    - veewee/xml 3.3.0 requires azjezz/psl ^3.0 -> satisfiable by azjezz/psl[3.3.0].

=>

sudo apt install php-intl
sudo phpenmod intl

Side note: league/uri-interfaces and league/uri come with a 64-bit "suggestion" since v7, but no strict dependency. So that one can be ignored for now.

Originally created by @MichaIng on GitHub (Aug 9, 2025). Original GitHub issue: https://github.com/koel/koel/issues/2044 ```console root@OdroidXU4:~# runuser -u koel -- php8.4 artisan koel:init -n --no-assets, please wait... Composer detected issues in your platform: Your Composer dependencies require a 64-bit build of PHP. PHP Fatal error: Uncaught RuntimeException: Composer detected issues in your platform: Your Composer dependencies require a 64-bit build of PHP. in /mnt/dietpi_userdata/koel/vendor/composer/platform_check.php:26 Stack trace: #0 /mnt/dietpi_userdata/koel/vendor/composer/autoload_real.php(25): require() #1 /mnt/dietpi_userdata/koel/vendor/autoload.php(22): ComposerAutoloaderInit1990307e9236461f0b1bf37c3a5182ce::getLoader() #2 /mnt/dietpi_userdata/koel/artisan(10): require('...') #3 {main} thrown in /mnt/dietpi_userdata/koel/vendor/composer/platform_check.php on line 26 ``` It is due to `paragonie/sodium_compat` since v2: https://github.com/paragonie/sodium_compat/commit/75d7cd8 Introduced with https://github.com/koel/koel/commit/7a8573c, hence since Koel v7.6.0. I do not exactly suggest to change anything about it. But neither docs nor release notes mention it, so I thought it is a good idea to make you aware of it. Installing dependencies via PHP Composer from source after removing `composer.lock` resolves it to `paragonie/sodium_compat` v1.21.1 on a 32-bit system, so nothing requires v2 in particular. A workaround on a pre-compiled archive it to downgrade `paragonie/sodium_compat`, but it fails due to composer scripts running `artisan` as well. Hence the check needs to be temporarily disabled. Composer will regenerate it after the downgrade: ```sh sed -i '/require a 64-bit build of PHP/d' vendor/composer/platform_check.php composer require 'paragonie/sodium_compat <2' ``` The step requires PHP `intl`, hence this in case needs to be installed/enabled first: ``` Problem 1 - saloonphp/xml-wrangler is locked to version v1.4.0 and an update of this package was not requested. - azjezz/psl 3.3.0 requires ext-intl * -> it is missing from your system. Install or enable PHP's intl extension. - saloonphp/xml-wrangler v1.4.0 requires veewee/xml ^3.1.0 -> satisfiable by veewee/xml[3.3.0]. - veewee/xml 3.3.0 requires azjezz/psl ^3.0 -> satisfiable by azjezz/psl[3.3.0]. ``` => ```sh sudo apt install php-intl sudo phpenmod intl ``` Side note: `league/uri-interfaces` and `league/uri` come with a 64-bit "suggestion" since v7, but no strict dependency. So that one can be ignored for now.
kerem closed this issue 2026-02-26 02:35:09 +03:00
Author
Owner

@phanan commented on GitHub (Aug 21, 2025):

Thanks for raising the issue. Indeed, the problem does appear to come from said commit, but we can't just downgrade paragonie/sodium_compat because it's required by pusher/pusher-php-server. However, since pusher/pusher-php-server v7.2.3 requires paragonie/sodium_compat ^1.6, installing this specific version should work. Do you think you can check?

<!-- gh-comment-id:3211688266 --> @phanan commented on GitHub (Aug 21, 2025): Thanks for raising the issue. Indeed, the problem does appear to come from said commit, but we can't just downgrade paragonie/sodium_compat because it's required by pusher/pusher-php-server. However, since pusher/pusher-php-server v7.2.3 [requires paragonie/sodium_compat ^1.6](https://packagist.org/packages/pusher/pusher-php-server#7.2.3), installing this specific version should work. Do you think you can check?
Author
Owner

@MichaIng commented on GitHub (Aug 21, 2025):

As said, nothing depends on paragonie/sodium_compat v2. pusher/pusher-php-server added optional support for it with v7.2.6, which is indeed the reason why composer then switched to paragonie/sodium_compat v2.1.0, because there was no reason anymore not to do. But also latest pusher/pusher-php-server still works with paragonie/sodium_compat v1. The dependency is declared as paragonie/sodium_compat: ^1.6|^2.0, hence all versions from v1.6 on are fine.

So Koel could re-add 32-bit support for pre-compiled archives by declaring explicitly "paragonie/sodium_compat": "<2" or "paragonie/sodium_compat": "^1.0" or "paragonie/sodium_compat": "1.*", whatever meets convention best 🙂.

<!-- gh-comment-id:3211776477 --> @MichaIng commented on GitHub (Aug 21, 2025): As said, nothing depends on `paragonie/sodium_compat` v2. `pusher/pusher-php-server` added _optional_ support for it with v7.2.6, which is indeed the reason why composer then switched to `paragonie/sodium_compat` v2.1.0, because there was no reason anymore not to do. But also latest `pusher/pusher-php-server` still works with `paragonie/sodium_compat` v1. The dependency is declared as `paragonie/sodium_compat: ^1.6|^2.0`, hence all versions from v1.6 on are fine. So Koel could re-add 32-bit support for pre-compiled archives by declaring explicitly `"paragonie/sodium_compat": "<2"` or `"paragonie/sodium_compat": "^1.0"` or `"paragonie/sodium_compat": "1.*"`, whatever meets convention best 🙂.
Author
Owner

@phanan commented on GitHub (Aug 22, 2025):

Yeah that certainly works too. Will issue a fix!

<!-- gh-comment-id:3213488448 --> @phanan commented on GitHub (Aug 22, 2025): Yeah that certainly works too. Will issue a fix!
Author
Owner

@MichaIng commented on GitHub (Aug 22, 2025):

Thanks, that makes handling things for our 32-bit users easier 🙂. In case v1.x implies security vulnerabilities/too weak algorithms at some point, maybe not worth to keep it for 32-bit support. But please put a breaking change notice in release notes then 🙂.

<!-- gh-comment-id:3214257667 --> @MichaIng commented on GitHub (Aug 22, 2025): Thanks, that makes handling things for our 32-bit users easier 🙂. In case v1.x implies security vulnerabilities/too weak algorithms at some point, maybe not worth to keep it for 32-bit support. But please put a breaking change notice in release notes then 🙂.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/koel-koel#1076
No description provided.