diff --git a/extensions/package-manager/src/Composer/ComposerAdapter.php b/extensions/package-manager/src/Composer/ComposerAdapter.php index d78d4a1f0..a678435f4 100644 --- a/extensions/package-manager/src/Composer/ComposerAdapter.php +++ b/extensions/package-manager/src/Composer/ComposerAdapter.php @@ -9,6 +9,7 @@ namespace Flarum\PackageManager\Composer; +use Composer\Config; use Composer\Console\Application; use Flarum\Foundation\Paths; use Flarum\PackageManager\OutputLogger; @@ -70,4 +71,9 @@ class ComposerAdapter return new ComposerOutput($exitCode, $output); } + + public static function setPhpVersion(string $phpVersion) + { + Config::$defaultConfig['platform']['php'] = $phpVersion; + } } diff --git a/extensions/package-manager/src/Job/ComposerCommandJob.php b/extensions/package-manager/src/Job/ComposerCommandJob.php index 56e38043d..4fb6fe8a4 100644 --- a/extensions/package-manager/src/Job/ComposerCommandJob.php +++ b/extensions/package-manager/src/Job/ComposerCommandJob.php @@ -11,6 +11,7 @@ namespace Flarum\PackageManager\Job; use Flarum\Bus\Dispatcher; use Flarum\PackageManager\Command\BusinessCommandInterface; +use Flarum\PackageManager\Composer\ComposerAdapter; use Flarum\Queue\AbstractJob; use Illuminate\Queue\Middleware\WithoutOverlapping; use Throwable; @@ -23,11 +24,11 @@ class ComposerCommandJob extends AbstractJob protected $command; /** - * @var int[] + * @var string */ protected $phpVersion; - public function __construct(BusinessCommandInterface $command, array $phpVersion) + public function __construct(BusinessCommandInterface $command, string $phpVersion) { $this->command = $command; $this->phpVersion = $phpVersion; @@ -36,12 +37,7 @@ class ComposerCommandJob extends AbstractJob public function handle(Dispatcher $bus) { try { - if ([PHP_MAJOR_VERSION, PHP_MINOR_VERSION] !== [$this->phpVersion[0], $this->phpVersion[1]]) { - $webPhpVersion = implode('.', $this->phpVersion); - $sshPhpVersion = implode('.', [PHP_MAJOR_VERSION, PHP_MINOR_VERSION]); - - throw new \Exception("PHP version mismatch. SSH PHP version must match web server PHP version. Found SSH (PHP $sshPhpVersion) and Web Server (PHP $webPhpVersion)."); - } + ComposerAdapter::setPhpVersion($this->phpVersion); $this->command->task->start(); diff --git a/extensions/package-manager/src/Job/Dispatcher.php b/extensions/package-manager/src/Job/Dispatcher.php index 96746138f..e5dd37864 100644 --- a/extensions/package-manager/src/Job/Dispatcher.php +++ b/extensions/package-manager/src/Job/Dispatcher.php @@ -73,7 +73,7 @@ class Dispatcher $command->task = $task; $this->queue->push( - new ComposerCommandJob($command, [PHP_MAJOR_VERSION, PHP_MINOR_VERSION]) + new ComposerCommandJob($command, PHP_VERSION) ); } else { $data = $this->bus->dispatch($command);