laravel / jetstream

Tailwind scaffolding for the Laravel framework.

Home Page:https://jetstream.laravel.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

When installing jetstream with specific php version, installer rolls back to system default php executable

apocsrbs opened this issue · comments

Jetstream Version

4.1

Jetstream Stack

Livewire

Laravel Version

10.2.9

PHP Version

8.2

Database Driver & Version

No response

Description

When installing laravel/jetstream using a non-default php-version, Jetstream somehow rolls back to the system-default (php)

Steps To Reproduce

Executing these commands:

#php8.2 /usr/bin/composer create-project laravel/laravel .
#php8.2 /usr/bin/composer require laravel/jetstream
#php8.2 artisan jetstream:install livewire

Last command results in this error:

INFO Migration created successfully.

Composer plugins have been disabled for safety in this non-interactive session. Set COMPOSER_ALLOW_SUPERUSER=1 if you want to allow plugins to run as root/super user.
Do not run Composer as root/super user! See https://getcomposer.org/root for details
./composer.json has been updated
Running composer update livewire/livewire
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

Problem 1
- Root composer.json requires php ^8.1 but your php version (7.3.33) does not satisfy that requirement.
Problem 2
- laravel/framework is locked to version v10.32.1 and an update of this package was not requested.
- laravel/framework v10.32.1 requires php ^8.1 -> your php version (7.3.33) does not satisfy that requirement.
Problem 3
- laravel/jetstream is locked to version v4.1.0 and an update of this package was not requested.
- laravel/jetstream v4.1.0 requires php ^8.1.0 -> your php version (7.3.33) does not satisfy that requirement.
Problem 4
- laravel/sanctum is locked to version v3.3.2 and an update of this package was not requested.
- laravel/sanctum v3.3.2 requires php ^8.0.2 -> your php version (7.3.33) does not satisfy that requirement.
Problem 5
- fakerphp/faker is locked to version v1.23.0 and an update of this package was not requested.
- fakerphp/faker v1.23.0 requires php ^7.4 || ^8.0 -> your php version (7.3.33) does not satisfy that requirement.
Problem 6
- laravel/pint is locked to version v1.13.6 and an update of this package was not requested.
- laravel/pint v1.13.6 requires php ^8.1.0 -> your php version (7.3.33) does not satisfy that requirement.
Problem 7
- laravel/sail is locked to version v1.26.0 and an update of this package was not requested.
- laravel/sail v1.26.0 requires php ^8.0 -> your php version (7.3.33) does not satisfy that requirement.
Problem 8
- nunomaduro/collision is locked to version v7.10.0 and an update of this package was not requested.
- nunomaduro/collision v7.10.0 requires php ^8.1.0 -> your php version (7.3.33) does not satisfy that requirement.
Problem 9
- phpunit/phpunit is locked to version 10.4.2 and an update of this package was not requested.
- phpunit/phpunit 10.4.2 requires php >=8.1 -> your php version (7.3.33) does not satisfy that requirement.
Problem 10
- spatie/laravel-ignition is locked to version 2.3.1 and an update of this package was not requested.
- spatie/laravel-ignition 2.3.1 requires php ^8.1 -> your php version (7.3.33) does not satisfy that requirement.
Problem 11
- symfony/deprecation-contracts v3.4.0 requires php >=8.1 -> your php version (7.3.33) does not satisfy that requirement.
- guzzlehttp/guzzle 7.8.0 requires symfony/deprecation-contracts ^2.2 || ^3.0 -> satisfiable by symfony/deprecation-contracts[v3.4.0].
- guzzlehttp/guzzle is locked to version 7.8.0 and an update of this package was not requested.

Installation failed, reverting ./composer.json and ./composer.lock to their original content.

That's odd because it first tries to look for PHP_BINARY which should be the binary that's in use when running the script. I don't know why this isn't working for you. I can't try this out myself right now but could you try this:

php8.2 -a
echo PHP_BINARY

And then show what that gives?

That's odd because it first tries to look for PHP_BINARY which should be the binary that's in use when running the script. I don't know why this isn't working for you. I can't try this out myself right now but could you try this:

php8.2 -a
echo PHP_BINARY

And then show what that gives?

Hi @driesvints - It returns nothing at all

Sorry, that's echo PHP_BINARY;

Sorry, that's echo PHP_BINARY;

That gives me: /usr/bin/php8.2

That seems correct. The installer should have picked this up. I don't know why that doesn't happen for you.

Could you maybe try a dd in this method to see what this result gives you?

https://github.com/laravel/jetstream/blob/4.x/src/Console/InstallCommand.php#L825

I wasn't able to dd() in that function so I tried returning a hardcoded string with "/usr/bin/php8.2" which didn't work.
I also tried calling $this->phpBinary() on the first line of the handle method, and it returned "/usr/bin/php8.2".

Problem solved! Not that it makes any sense though...

If I specify the composer "binary" it works - even though it's the same composer 🤪

So if I call this command "php8.2 artisan jetstream:install livewire --composer=/usr/bin/composer" it works...

Weird one.. glad you got that working!