Laminas je PHP framework, nástupce Zend Framework 3. Vývoj ZF 3 byl ukončen v roce 2019, našstěstí Laminas vývoj běží dál a nyní je k dispozici již funkční verze pro PHP 8.0.
Instalace čistého projektu se řeší přes Lamins CLI. Ale u stávajících projektů jsem nikde návod na upgrade pro Laminas nenašel. Proto jsem si to zkusil přes composer sám.
1. Úprava souboru composer.json
Přidat/upravit konfiguraci platformy v souboru composer.json v root adresáři projektu.
"config": {
"platform": {
"php": "8.0.10"
}
},
2. Vytvoření lokálního nginx serveru s PHP 8.0.10 FPM přes Docker
V Dockeru jsem si ukuchtil jednoduchý Dockefile s PHP 8.0.10 spustitelný v nginx přes Docker compose.
FROM php:8.0.10-fpm RUN apt-get update && apt-get upgrade -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpq-dev \ libmagickwand-dev \ libmcrypt-dev \ libmcrypt-dev \ libpng-dev \ libmemcached-dev \ libssl-dev \ libssl-doc \ libsasl2-dev \ zlib1g-dev \ libicu-dev \ g++ \ libxml2-dev \ libonig-dev \ libzip-dev \ && pear install -a SOAP-0.13.0 \ && docker-php-ext-install \ iconv \ mbstring \ mysqli \ pdo_mysql \ sysvsem \ sysvshm \ sysvmsg \ soap \ zip \ && docker-php-ext-configure intl \ && docker-php-ext-install intl \ && pecl install memcached && docker-php-ext-enable memcached \ && yes '' | pecl install imagick && docker-php-ext-enable imagick
Takže přidám si Dockerfile do projektu v PhpStorm do složky /docker (do nového adresáře) a nastavím k němu cestu v souboru docker-compose.yml.
php: build: context: ./ dockerfile: docker/php/8.0.10fpm/Dockerfile
V terminálu spustím vytvoření kontejneru příkazem „docker-compose build“. Zahlásí successfully, pokud ne, tak bude třeba upravit Dockerfile.
3. Update composer balíčků v projektu
příkaz: „docker-compose run php php composer.phar update“ vyhodí problémy s kompatibilitou balíčkou Laminas
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
3.1 Problém laminas-cache-storage-adapter-apc require php ^5.6 || ^7.0
Problem 1
– laminas/laminas-cache-storage-adapter-apc[1.0.0, …, 1.1.x-dev] require php ^5.6 || ^7.0 -> your php version (8.0.10; overridden via config.platform, same as actual) does not satisfy that requirement.
– laminas/laminas-cache 2.13.0 requires laminas/laminas-cache-storage-adapter-apc ^1.0 -> satisfiable by laminas/laminas-cache-storage-adapter-apc[1.0.0, 1.0.1, 1.0.x-dev, 1.1.x-dev].
– Root composer.json requires laminas/laminas-cache 2.13.0 -> satisfiable by laminas/laminas-cache[2.13.0].
Řešení je zde https://stackoverflow.com/questions/68987059/laminas-cache-2-13-php8-upgrade. Prostě nahradit verze wildcard * u verze laminas-cache 2.13. "laminas/laminas-cache": "^2.13"
"replace": {
"laminas/laminas-cache-storage-adapter-apc": "*",
"laminas/laminas-cache-storage-adapter-dba": "*",
"laminas/laminas-cache-storage-adapter-mongodb": "*",
"laminas/laminas-cache-storage-adapter-wincache": "*",
"laminas/laminas-cache-storage-adapter-xcache": "*",
"laminas/laminas-cache-storage-adapter-zend-server": "*"
},
3.2 Problém Laminas Console byl nahrazen Lamins CLI
laminas/laminas-test[3.5.0, …, 3.5.1] require laminas/laminas-console ^2.6 -> satisfiable by laminas/laminas-console[2.6.0, 2.7.0, 2.8.0].
Problém vyřešen přechodem na dev verzi laminas-test 4. Verze 3 neumí PHP 8.
"laminas/laminas-test": "^4.0.x-dev",
3.3 Problém Facebook SDK (není součást Laminas) nepodporuje PHP 8
Facebook SDK používám pro příhlášení přes Facebook.
facebook/graph-sdk 5.7.0 requires php ^5.4|^7.0 -> your php version (8.0.10; overridden via config.platform, same as actual) does not satisfy that requirement.
Ano, Facebook login SDK neumí PHP 8 a ani nebude umět, protože již balíček není podporován. Tento problém řeší přechod na https://github.com/thephpleague/oauth2-facebook. Tj. nahradit řádek
"facebook/graph-sdk": "^5.7", za "league/oauth2-facebook": "^2.0"
Spuštení Dockeru
Hotovo. Už jen spustit nové PHP příkazem: „docker-compose up -d“ a Laminas projekt mám zmigrován.