Próbuję odpalić swój projekt na nowym komputerze z Windows 10 Pro.
Pobrałem projekt z Github'a i wykonuję polecenie:
composer install
Dostaję niestety poniższy błąd:
C:\xampp\htdocs\ligatyperow2>composer install
Deprecation Notice: Return type of Symfony\Flex\Response::jsonSerialize() should either be compatible with JsonSerializable::jsonSerialize(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\xampp\htdocs\ligatyperow2\vendor\symfony\flex\src\Response.php:68
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
The following exception probably indicates you have misconfigured DNS resolver(s)
In CurlDownloader.php line 372:
curl error 6 while downloading https://flex.symfony.com/versions.json: Coul
d not resolve host: flex.symfony.com
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>...]
Korzystam z Xampp'a na którym mam PHP w wersji 8.2.1
Projekt PHP mam w wersji 4.4
Znalazłem w necie takie informacje:
https://symfony.com/blog/the-old-flex-infrastructure-is-shutting-down
https://symfony.com/blog/upgrade-flex-on-your-symfony-projects
ale wykonując wskazane polecenie:
composer update symfony/flex --no-plugins --no-scripts
wyświetla mi info że moje zależności nie pasują pod wersję PHP 8.2.1:
C:\xampp\htdocs\ligatyperow2>composer update symfony/flex --no-plugins --no-scripts
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 ^7.1.3 but your php version (8.2.12) does not satisfy that requirement.
Problem 2
- stof/doctrine-extensions-bundle is locked to version v1.5.0 and an update of this package was not requested.
- stof/doctrine-extensions-bundle v1.5.0 requires php ^7.1.3 -> your php version (8.2.12) does not satisfy that requirement.
Problem 3
- symfony/asset is locked to version v4.3.11 and an update of this package was not requested.
- symfony/asset v4.3.11 requires php ^7.1.3 -> your php version (8.2.12) does not satisfy that requirement.
Problem 4
- symfony/console is locked to version v4.3.11 and an update of this package was not requested.
- symfony/console v4.3.11 requires php ^7.1.3 -> your php version (8.2.12) does not satisfy that requirement.
mój plik composer.json :
{
"type": "project",
"license": "proprietary",
"require": {
"php": "^7.1.3",
"ext-ctype": "*",
"ext-iconv": "*",
"sensio/framework-extra-bundle": "^5.1",
"stof/doctrine-extensions-bundle": "^1.3",
"symfony/asset": "4.3.*",
"symfony/console": "4.3.*",
"symfony/dotenv": "4.3.*",
"symfony/expression-language": "4.3.*",
"symfony/flex": "^1.3.1",
"symfony/form": "4.4.2",
"symfony/framework-bundle": "4.4.0",
"symfony/http-client": "4.4.*",
"symfony/intl": "4.4.*",
"symfony/monolog-bundle": "^3.1",
"symfony/orm-pack": "^1.0",
"symfony/process": "4.3.*",
"symfony/security-bundle": "4.4.0",
"symfony/serializer-pack": "*",
"symfony/swiftmailer-bundle": "^3.1",
"symfony/translation": "4.4.*",
"symfony/twig-bundle": "4.4.*",
"symfony/validator": "4.4.*",
"symfony/web-link": "4.3.*",
"symfony/yaml": "4.3.*"
},
"require-dev": {
"doctrine/doctrine-fixtures-bundle": "^3.4",
"symfony/debug-bundle": "^4.4",
"symfony/maker-bundle": "^1.12",
"symfony/phpunit-bridge": "^5.0",
"symfony/stopwatch": "^4.4",
"symfony/test-pack": "*",
"symfony/var-dumper": "^4.4",
"symfony/web-profiler-bundle": "^4.4.2",
"symfony/web-server-bundle": "4.3.*"
},
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true,
"allow-plugins": {
"symfony/flex": true
}
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"paragonie/random_compat": "2.*",
"symfony/polyfill-ctype": "*",
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php71": "*",
"symfony/polyfill-php70": "*",
"symfony/polyfill-php56": "*"
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"@auto-scripts"
],
"post-update-cmd": [
"@auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "4.4.2"
}
}
}
Prośba o podpowiedź jak to teraz rozwiązać żeby pójść dalej a więc uruchomić projekt lokalnie na kompie ?
PS. Dodam tylko że będę chciał w najbliższym czasie przenieść się na wersję 7 albo wcześniejszą ale nowszą stabilną wersję.
Fragment z Twojego composera:
"php": "^7.1.3",
Problem 1 - Root composer.json requires php ^7.1.3 but your php version (8.2.12) does not satisfy that requirement. Problem 2 - stof/doctrine-extensions-bundle is locked to version v1.5.0 and an update of this package was not requested. - stof/doctrine-extensions-bundle v1.5.0 requires php ^7.1.3 -> your php version (8.2.12) does not satisfy that requirement. Problem 3 - symfony/asset is locked to version v4.3.11 and an update of this package was not requested. - symfony/asset v4.3.11 requires php ^7.1.3 -> your php version (8.2.12) does not satisfy that requirement. Problem 4 - symfony/console is locked to version v4.3.11 and an update of this package was not requested. - symfony/console v4.3.11 requires php ^7.1.3 -> your php version (8.2.12) does not satisfy that requirement.
Co do PHP w wersji starszej, wystarczy pobrać https://windows.php.net/downloads/releases/ wersję windows i tą odpalić composer bezpośrednio z exeka starszej wersji
Problem rozwiązałem tak że odinstalowałem Xamppa z PHP 8.
Zainstalowałem PHP z wersją 7.1.3
Następnie zainstalowałem composera 2.2 bo działa na wersji 7 PHP
Później wszystko już zadziałało i odpala mi się projekt.
Chciałem Was prosić o podpowiedź jak się zabrać teraz za podnoszenie swojego projektu z Symfony 4.4 na Symfony 7 lub z Symfony 6 na razie a następnie z 6 na 7 bo wolałbym mieć najnowszą obecnie wspieraną.
Jaką kolejność obrać ?
Czy taką:
1) Zainstalować najnowszego Xamppa z wersją 8 PHP ,
2) Zainstalować najnowszego Composera
3) Dokonać zmian w composer.json
?
PS. Nie wiem niestety co zmienić w composer.json . Próbowałem zmienić w composer.json wersję Symfony i PHP ale to chyba nie starczy bo wykonując composer update niestety co chwilę się wysypuje na moich zależnościach że coś jest w za niskiej wersji albo w za wysokiej itd. Mam całą listę tego co nie pasuje i teraz przejście tego po kolei to jakaś masakra. Czemu composer update nie załatwi mi tego tak że pobierze najnowsze wersje i już tylko sam muszę mu wskazywać ? Przecież to nie może tak działać.
O co chodzi z tym Rectorem? Jak się za niego zabrać przy podnoszeniu z 4.4 na 7 ?
Dzięki.
Composer zrobi automatyczny update ale pomiędzy minor wersjami. Gdybyś miał 4.2 to by bez problemów zmigrował do 4.4.51 bo to ostatnia wydana wersja z Symfony4.
Cała zabawa z major wersjami polega na tym, że to duża zmiana i wymaga już zmian w kodzie, nie tylko nowszych wersji bibliotek, a Composer zarządza tylko bibliotekami.
Upgrade z 4.4 do 5.x może być ciężki bo dość sporo się pozmieniało. Z 5 do 6 to drobne rzeczy - tam już były głównie rzeczy związane z przejściem na php8. Symfony 7 wyszło całkiem niedawno i jeszcze bym nie proponował migracji. Zostaw na 6.4 az ludzie podoroabiają wsparcie do rozszerzeń do Symfony 7.
Przejrzyj to: https://symfonycasts.com/screencast/symfony5-upgrade/flex-symfony-require
nie musisz kupować - powinny wystarczyć same scripty
php8 będziesz dopiero potrzebował do symfony 6.x, do tego też jest dość dobry opis:
https://symfonycasts.com/screencast/symfony6-upgrade
Rector to taki tool do automatycznego upgradu. Instalujesz composerem a potem dodajesz różne sety, które automatycznie poprawiają kod. O ile dobrze pamiętam w którymś z tych screencastów jest to też omówione.
ehh ... myślałem że jak przechodziłem z 2.8 na 4.4. to będzie to ostatni raz że będę kopiował wszystko z jednego projektu do drugiego a później mozolnie poprawiał kod kilka miesięcy.
Wygląda na to że teraz znów sytuacja się powtarza przy przejściu z 4.4 na 6.4.2
Pytanie czy z 6.4.2 na kolejne będzie już normalość ale tego nie wie nikt.
Oczywiście mam świadomość że sam zawaliłem że nie update'owałem na bieżąco - ale kto tak robi ?
Jeszcze najgorsze jest to że będę się bawił znów w odinstalowywanie Xamppa i Composera , instalował nowe wersje aby przenieść projekt na wyższą wersję Symfony , a jak będę potrzebował coś poprawić/zmienić w obecnym projekcie to znów będę odinstalowywał Xamppa i Composera aby w niższej wersji PHP odpalić projekt
eh
jest to trochę upierdliwe, ale zmian jest zdecydowanie mniej niż podczas migracji do 4.x.
W 5.4 została kompletnie przepisana autoryzacja i autentykacja, w 6.4 masz rzeczy związane z php8. Powaznie przejrzyj te dwa screencasty i zobaczysz, ze nie ma tego aż tak duzo.
Jak na prawdę musisz wracać co chwilę do starej wersji, to możesz to zrobić korzystając z dokera. Różnica będzie taka, że w przeglądarce jedną wersję będziesz miał pod adresem np. localhost:8080 a drugią localhost:8081
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)