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.