PHP se vyvíjí s každou další verzí. Verze 8.2 už není ten samý jazyk. V rámci vydání v7, v prosinci 2015 se jazyk zásadně aktualizoval. Jednalo se o téměř 150% nárůst výkonu ve srovnání s v5. Jazyk přejímá stále modernější syntaxi a osvědčil se jako moderní škálovatelný jazyk. Vydáním verze 8.0 se z něj stal velmi vyspělý jazyk. Výjimkou není ani vydání 8.2, kterého je plánováno na 24. listopadu 2022. V tomto článku se budeme zabývat odstraněním banální konfigurační chyby, která může zhatit experimentální instalaci či upgrade.
Obsah
PHP 8.2 novinky
Nová funkce memory_reset_peak_usage
memory_reset_peak_usage, která resetuje špičkové využití paměti vrácené funkcí memory_get_peak_usage. To může být užitečné v aplikacích, které vyvolávají nebo iterují akci vícekrát a potřebují zaznamenat špičkové využití paměti při každém vyvolání. Bez možnosti resetovat využití paměti pomocí nové funkce memory_reset_peak_usage vrací funkce memory_get_peak_usage absolutní špičkové využití paměti během celého běhu.
Třídy pouze pro čtení
Do verze 8.1 byla přidána podpora pro vlastnosti určené pouze pro čtení. Stále však není možné vytvářet třídy pouze pro čtení. Verze 8.2 pak můžete nově vytvářet readonly třídy, což způsobí, že všechny vlastnosti této třídy budou implicitně readonly. Zabrání to také vytváření dynamických vlastností.
Vykonání dotazu MySQLi
Vydání PHP8.1 vyřešilo problém s vazbou SQL parametru pomocí reference. PHP8.2 to výrazně usnadní vyloučením metody execute_query v Mysqli.

PHP8.1 upgrade na verzi 8.2
2022/10/03 00:01:01 [error] 61317#61317: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.10.10.172, server: exp.local, request: "GET / HTTP/2.0", upstream: "fastcgi://127.0.0.1:9000", host: "exp.local"
Pro Nginx i Apache existují dva způsoby propojení mezi serverem a PHP.
Chyba konfigurace č. 1
Plná php-fpm fronta. Upravíme /etc/php/8.2/fpm/php-fpm.conf, konkrétně zvýšime počet pm.max_children
Chyba konfigurace č. 2
Proces php-fpm není vůbec spuštěn, port 9000 není dostupný. Prověříme příkazem netstat -ant | grep 9000
Chyba konfigurace č. 3
Konflikt mezi částečně odinstalovanou původní verzi PHP a novou verzi
Chyba konfigurace č. 4
Jiná konfigurace Nginx / Apache v porovnání s tím co je nastaveno v PHP pool konfiguraci
Po instalaci nové verze PHP jsou všechny konfigurační sobory nové. Jelikož se nejedná o upgrade ale čistou instalaci, nebudete upozornění ani na změnu konfigurace. Poslední možnost.. Jak zajisté víte, existují dva způsoby propojení mezi Nginx/Apache a PHP.
1. TCP
fastcgi_pass 127.0.0.1:9000;
2. SOCKET
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
To co je aktuálně nastaveno v PHP pool lze ověřit v cestě
/etc/php/8.2/fpm/pool.d/www.conf
Pokud nepoužíváte socket, pak v po instalaci PHP 8.2 je ve výchozím nastavení v uvedeném konfiguračním souboru na řádku listen zapsáno toto
listen = /run/php/php8.2-fpm.sock
V tomto případě je správna konfigurace řádku listen v souboru /etc/php/8.2/fpm/pool.d/www.conf
listen = 127.0.0.1:9000;
Dotčená konfigurace propojení Nginx s PHP, pak v souvislostech vypadá takto:
upstream exp { # server unix:/var/run/php/php8.2-fpm.sock; server 127.0.0.1:9000; } ... location ~ \.php$ { try_files $uri = 404; #Prevents autofixing of path which could be used for exploit root /var/www/html/exp.local; include fastcgi_params; fastcgi_buffering on; fastcgi_pass 127.0.0.1:9000;
Užitečné
Návod WordPress Nginx konfigurace
Domovská stránka PHP