PHP w nowej wersji, czyli dlaczego moja strona nie działa?

PHP jest językiem programowania, który kryje się za 95 proc. stron internetowych i systemów współcześnie dostępnych w Internecie. Do pewnego momentu był „przezroczysty” dla użytkowników. Powstawały kolejne wersje, były aktualizowane „gdzieś tam” w czeluściach konta hostingowego, a ponieważ nowsze wersje zawsze były wstecznie kompatybilne zatem mało kto zauważał fakt aktualizacji jakiegoś enigmatycznego języka skryptowego w tle, skoro jego WordPress, Joomla, czy inny Drupal działają jak działały. Luki bezpieczeństwa, kiepska wydajność, coraz większe problemy z zabezpieczeniem serwerów przez słabe zabezpieczenia języka co najwyżej spędzały sen z powiek administratorom serwerów. Tak było do wersji 5.6 tego języka. Zespół odpowiedzialny za PHP zauważył, że zmiany są niezbędne, gdyż coraz więcej firm hostingowych i administratorów serwerów wprost odradza klientom używanie PHP. Postawiono na radykalne rozwiązania. Radykalne rozwiązania w IT często oznaczają porzucenie balastu przeszłości, a to zazwyczaj oznacza brak kompatybilności wstecznej. Tak też stało się z PHP – z powodu dużych zmian w jądrze tego języka pominięto całkowicie numerację 6 i od razu przeskoczono do wersji 7. Wprowadzono też zasadę, że każda kolejna wersja będzie wspierana tylko do pewnego momentu – w praktyce jest to ok. 2 lat – a potem stanie się wersją przestarzałą i niewspieraną. Zespół odpowiedzialny za PHP doszedł także do wniosku, iż utrzymywanie „na siłę” wstecznej kompatybilności w nieustannie zmieniającym się środowisku Internetu, gdzie nowe zagrożenia pojawiają się z dnia na dzień, nie ma żadnego uzasadnienia, w związku z czym nowe wersje niekoniecznie muszą być wstecznie kompatybilne o ile  jest to uzasadnione zwiększonym bezpieczeństwem i stabilnością. Większość właścicieli stron internetowych przeżyła nieprzyjemne zaskoczenie, gdy ich normalnie dotychczas działająca strona WWW nagle zaczęła generować dziwne błędy lub całkowicie przestała funkcjonować po którejś z kolejnych aktualizacji systemu hostingu. Powodem okazywała się zmiana wersji języka PHP z 5.6 na 7.1, a potem na 7.2 itd. aż do aktualnie kończącej wsparcie wersji 7.4. Jak wspomniano, nowe wersje PHP nie zawsze są wstecznie kompatybilne – wprawdzie w obrębie jednej gałęzi te niekompatybilności nie są znaczące, a dostosowanie kodu strony do nowej wersji PHP jest stosunkowo łatwe, niemniej jednak istnieją. Powstaje zatem konieczność stałej opieki nad stroną WWW – czy to samodzielnej, czy zleconej.

Obecnie aktualną wersją języka PHP jest wersja 8.0. Najczęściej stosowana jeszcze wersja 7.4 kończy wsparcie w grudniu 2022. Ponownie – PHP 8.0 nie jest w pełni kompatybilny wstecznie. Znacząca ilość stron i systemów udostępnionych poprzez WWW będzie wymagała prac dostosowujących – każdy właściciel takiego systemu ma do wprowadzania pozycję do kalendarza na rok 2023.

Kosztów uniknąć się nie da – albo trzeba ponieść je na dostosowanie strony lub systemu jeśli nie są kompatybilne z nową wersją PHP, albo zapłacić dostawcy usług hostingowych za możliwość dalszego używania starszej wersji języka PHP. Dostawcy usług hostingowych znaleźli bowiem w nowym modelu aktualizacji języka PHP sposób na dodatkowy zarobek. Jeśli klient nie chce lub nie ma możliwości dostosowania do nowej wersji języka PHP swojej strony WWW czy też systemu utrzymywanego na serwerach danej firmy hostingowej może opłacić „usługę udostępniania starszej wersji PHP”. Rozważania nad etyką biznesową takiego postępowania zostawmy na kiedy indziej. Fakt faktem, że aktualizacja języka programowania stojącego za istotnym elementem biznesowym lub wizerunkowym jakim jest strona WWW lub system dostępny w Internecie, do nowszej, lepiej zabezpieczonej wersji tego oprogramowania jest zawsze rozsądnym posunięciem w realiach obecnego IT.

iOS 16 i watchOS 9 – tuning pod maską

W najnowszych iteracjach systemów operacyjnych dla urządzeń mobilnych Apple – iOS 16, i watchOS 9 – z punktu widzenia użytkownika nie zmienia się wiele. Ot, kolejne wersje systemów dla iPhone i Apple Watch bez większych innowacji. Dla właścicieli aplikacji kierowanych na te systemy Apple zmiany są widoczne i choć na razie nie są one szczególnie obciążające i czysto opcjonalne, to jednak są zapowiedzią większych restrykcji, których zapewne doczekamy się w kolejnych wersjach systemów – już niewątpliwie jako obowiązkowych do implementacji.

Chodzi naturalnie o dalsze zacieśnianie polityki prywatności do usług lokalizacyjnych, co ma niebagatelne znaczenie dla właścicieli aplikacji, których funkcjonalność opiera się o te usługi, takich jak np. systemy monitoringu.

Jak wiadomo, aby iOS lub watchOS przesyłały dane lokalizacyjne w tle, użytkownik musi wyrazić na to zgodę. Podczas pierwszego pytania o zgodę na lokalizację, iOS od wersji 16 w ogóle nie pokazuje użytkownikowi opcji „Pozwalaj zawsze” – jest tylko „Jeden raz” i „Gdy używam aplikacji”. Pole „Pozwalaj zawsze” pojawia się podczas drugiego pytania. W poprzednich wersjach iOS to drugie, uszczegółowione pytanie pojawiało się automatycznie po pierwszym wywołaniu funkcji lokalizacji w tle. Teraz mamy istotną zmianę – to iOS lub watchOS decydują samodzielnie kiedy je pokazać – decyzję podejmuje Neural Engine (koprocesor sztucznej inteligencji). Możliwa stała się zatem sytuacja, że Neural Engine pokaże to pytanie dopiero po jakimś czasie, a dopóki użytkownik nie zaakceptuje uprawnienia, dane lokalizacyjne w tle nie będą zsyłane – należy to uwzględnić w projekcie aplikacji.

Jest to jednak stosunkowo niewielka zmiana z punktu widzenia frontu aplikacji. Znacznie ciekawsze rzeczy dzieją się „pod maską” – Xcode (program deweloperski służący do projektowania aplikacji dla systemów Apple) pokazuje ostrzeżenia, nawet jeśli sprawdzenie czy usługi lokalizacyjne są dostępne w systemie odbywa się bez wcześniejszego przyznania uprawnień przez użytkownika. Mowa nie o skorzystaniu z lokalizacji, wyznaczeniu pozycji itd. – wystarczy samo sprawdzenie czy w systemie jest dostępna możliwość pobrania lokalizacji, bez faktycznego korzystania z niej, aby Xcode ostrzegał o nieuprawnionym dostępie. A to może oznaczać tylko jedno – w przyszłych wersjach systemów iOS i watchOS samo sprawdzenie, czy można korzystać z usług lokalizacyjnych będzie jeszcze bardziej ograniczone i możliwe do wykonania po uprzednim zapytaniu użytkownika o zgodę. Obecnie jest to tylko przypuszczenie, jednak jeśli miałoby się spełnić, wszystkie systemy i aplikacje opierające swoją funkcjonalność na wyznaczaniu pozycji urządzeń z iOS lub watchOS będą wymagały przeprojektowania na tyle znaczącego, że już obecnie watro te zmiany zacząć rozważać przynajmniej na poziomie koncepcyjnym.