Composer php versiya xətası

Posted on 2021-12-05 17:28:04

Mənim də başıma gəldi…

Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version “>= 8.0.0”. You are running 7.4.13.
Xəta

Bax oturmuşdum heç kəsə heçnə eləmirdim. Dedim qoy məqaləmə uyğun bir dənə video hazırlayım. Bunun üçün mənə yeni Laravel proyekti lazım idi. Bilirsiniz neçə dəfə yeni Laravel proyekti yaratmışam? Belə problem ilk dəfədir çıxır qarşıma. Neyniyək? Ən birinci PHP versiyasını yoxladım.

QEYD: Homestead istifadə edirəm. Bildiyiniz kimi burada versiyanı dəyişmək üçün sadəcə php80 yazmaq kifayət edir.

Versiyanı yoxlayıram:

php -v

Nəticədə versiyanın 8.0 olduğuna şahid oluram. Xətanın nədən yarandığı biraz da çox təəcübləndirir. Axı məndə php 8.0dır nəyə görə xəta verirsən?! Bəli belə olanda onunla danışıb cavab almağı gözləyirəm. Əlbəttə heç bir cavab gəlmir. Mən də məcbur oluram axtarışa davam edim…

Bəlkə söndürüm yandırım?

Amma Nəyi? Eh gəl elə bir başa noutbuku söndürüm yandırım… Əlbəttə noutbuku söndürəndə homestead serverimiz də sönür. Ona görə vagrant up edirik. Həyacanla təzədən xətanın olub olmamasını yoxlayırıq. Vəəəə budur… xəta hələ də oradadır :(

Composer.json faylım:

{
"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require": {
"php": "^7.3||^8.0",
"fruitcake/laravel-cors": "^2.0",
"guzzlehttp/guzzle": "^7.0.1",
"laravel/framework": "^8.65",
"laravel/sanctum": "^2.11",
"laravel/tinker": "^2.5"
},
"require-dev": {
"facade/ignition": "^2.5",
"fakerphp/faker": "^1.9.1",
"laravel/sail": "^1.0.1",
"mockery/mockery": "^1.4.4",
"nunomaduro/collision": "^5.10",
"phpunit/phpunit": "^9.5.10"
},
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"scripts": {
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
"post-update-cmd": [
"@php artisan vendor:publish --tag=laravel-assets --ansi"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
]
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
"minimum-stability": "dev",
"prefer-stable": true
}

Google etməliyik:

Ən birinci elə xətanın mesajını kopyalayıb googleda axtarışa verirəm.

Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version “>= 8.0.0”. You are running 7.4.13. in …

Araşdırmadan belə nəticəyə gəlirəm ki, çox adam təklif edir platformanı iqnor etmək üçün bayraq əlavə edim vəya configurasiya faylında (composer.json) platformanın yoxlanmasını false edim.

composer install --ignore-platform-reqs
vəya
...
"config": {
"platform-check": false,
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
...

Dəyişdikdən sonra:

composer dumpautoload

Nəticə:

platformanın yoxlanmasını söndürdükdə

Axtarışa davam edirik

Xətaya biraz da diqqətlə baxdıqdan sonra, composerin məndə olan php versiyanı düzgün görmədiyini düşündüm. Maraqlı gəldi, görəsən məndə php 8.0 olduğu halda niyə php 7.4 kimi görür. Bunun üçün axtarışın sorğusunu dəyişirəm. Artıq Composerin php versiyanı necə yoxladığını öyrənmək istəyirəm. Bunu axtararkən təkliflərdən biri platformada phpnin versiyasının konfigurasiyada qeyd etmək olduğunu gördüm. Dedim nəhlət sənə kor şeytan, yoxlayaq da, görək bəlkə alındı. Əvvəl etdiyim dəyişiylikləri geri qaytarıb platformanın php 8.0 versiyada işləməsini qeyd edirəm:

...
"platform": {
"php": "8.0"
}
...

Bunu etdikdən sonra məsləhət görürlər composer.lock faylını silib təzədən composer install edirik. Amma nəticə yenə əvvəldən gördüyümüz xətadır.

Gərək əvvəldən edərdim:

Proyektin vendor/composer/ qovluğunda platform_check.php faylı var. Həmin bu faylın skripti bizə erroru verir. Biz onu composerə platformanı iqnor et deyəndə həmin bu faylı silir. Ona görə sadə 500 errorunu alırıq. Nəisə dedim qoy phpinfo() vasitəsi ilə phpnin versiyasını yoxlayım. Proyektin public/index.php faylını biraz dəyişirəm:

<?php

echo phpinfo();
exit;

Nəticə:

phpinfo()

Bunu görəndə elə bil zərbə gözləmədiyim yerdən gəldi.

Yoruldum, davamını sonra gətirərəm… dəqiq həllini hələ bilmirəm. Deyəsən XAMPP paketinə qayıdacam.

Qayıtdım?

Demək olar. Tam olaraq XAMPPdan istifadə etməsəm də, bilmirəm nə səbəbdən. Amma XAMPPdan qabaq Homestead versiyasını yenilədim və vagrant destroy sonra vagrant up edib yoxladım bəlkə düzələr. Heçnə kömək etmirdi. Sonda XAMPP install elədim və tadaaam Homestead də işlədi. Artıq yuxarıda gördüyünüz xətanı almırdım. Hal-hazırda problemsiz çalışır…

XAMPP dedim qoy sistemdə qalsın, birdən lazım olar yenə. Homesteadə qarşı etibar azalıb. XAMPPın install olunması ilə bağlı ayrıca məqalə də yazmışam. Sistemdə artıq phpnin versiyasını 8 görsədir.

Bu xəta da belə getdi. Diqqətiniz üçün təşəkkür.

İanə: https://aytiqaqash.com/donate

Youtube: https://www.youtube.com/c/AyTiQaqa%C5%9F
Facebook Qrup: https://www.facebook.com/groups/aytiqaqash
Facebook Səhifə: https://www.facebook.com/aytiqaqash
Telegram Qrup: https://t.me/aytiqaqashlar
Telegram Kanal: https://t.me/aytiqaqash
İnstagram: https://www.instagram.com/aytiqaqash/
Twitter: https://twitter.com/aytiqaqash