Jak ważne jest aktualizowanie oprogramowania na serwerze

php-logoNa własnych maszynach produkcyjnych przeznaczonych pod Web zawsze kompiluję nginx + php. Mimo że „kompilacja” dla niektórych brzmi strasznie jest to tak naprawdę banalnie prosta procedura, tym bardziej jeśli chociaż jeden raz to przeszliśmy.

Niestety nie zawsze mam okazję wdrażać aplikacje/systemy webowe na maszynach przygotowanych przeze mnie, a niektórych adminów nie można po prostu doprosić się o świeżość PHP. Kilka ostatnich projektów były uruchamiane na maszynach gdzie PHP jest zainstalowany z paczki. Niby nic groźnego, a nawet zalecanego przez niektórych Linuksiarzy (stare=bezpieczne), ale np. Debian, CentOS mają paczki z PHP w wersji 5.3.3. Numerek nic Wam nie mówi? Wersja 5.3.3 była wydana 22 lipca 2010 roku! To już prawie 3 lata. W świecie języka, który jest bardzo dynamicznie rozwijany jest to cała dekada.

Nie byłoby w tym nic dziwnego, gdyby jeden z projektów nie korzystał z wbudowanego w PHP SoapClient (moduł libxml). No bo po co dodawać biblioteki zewn. do SOAP jeśli PHP ma to wbudowane?
Wszystko działało świetnie, do momentu gdy musiałem wywołać żądanie z drugim parametrem (choice w XSD). SoapClient uparcie twierdził, że WSDL nie pozwala pominąć pierwsze parametru. A gdy był podany pierwszy, to ignorował drugi. Zmiany w XSD pomogły i pojawiło się pytanie gdzie problem?

Koniec, końców okazało się, że w PHP był błąd który został poprawiony w wersji 5.3.18 (z #50997SOAP Error when trying to submit 2nd Element of a choice).

Pod tym względem nie do końca rozumiem osoby odpowiedzialne, za akceptację paczek w tych dystrybucjach. Co innego migracja na PHP 5.4, a co innego łatanie poprzedniej wersji (5.3), gdzie nic nowego się nie pojawia.
Pod tym względem zawsze lubiłem PLD, gdzie paczki można było spokojnie użyć w wielu przypadkach zamiast kompilowanych wersji (obecnie mają 5.3.21, a aktualny PHP to 5.3.22).

Podsumowując – jeśli programujecie w PHP, lub jesteście administratorami systemu z PHP proszę, pilnujcie czy przypadkiem na php.net nie ma nowszej wersji. Może to zaoszczędzić kilku dni w szukaniu błędu, lub uniemożliwić wykorzystanie luki w PHP, która wyjdzie na wierzch.

Tagged: