Często jest tak, że aplikacja korzysta z jakichś bibliotek, modułów lub zakłada pewne opcje konfiguracyjne. Przykładem może być sprawdzanie MIME pliku z wykorzystaniem modułu Fileinfo
. PHP w wersjach przeznaczonych na Windowsa wymaga ręcznej edycji php.ini
i włączenia wczytywania tego modułu. Efekt jest taki, że w środowisku *nix wszystko działa, a po uruchomieniu tego samego kodu na Windowsie jest problem…
Mając chwilę wolnego czasu napisałem kawałek kodu, który pomaga znajdować tego typu problemy z zależnościami, konfiguracją przed uruchomieniem docelowej aplikacji – mowa o PHP Applications Requirements Tester (PART). Projekt znajduje się na moim koncie w serwisie GitHub.
Użycie jest według mnie bardzo proste – przykładowy plik z testami znajuje się również na GitHubie. Wystarczy utworzyć nowy plik PHP, dołączyć plik part.php
, utworzyć obiekt PART i wywoływać na nim odpowiednie metody z testami środowiska. Taki zestaw umieszcza się w miejscu gdzie ma być aplikacja i uruchamiamy – w przeglądarce lub z shella. Mogą wystąpić różnice w konfiguracji między środowiskiem shell i webowym (ponieważ mają osobne pliki php.ini
, więc najlepiej uruchamiać test z tego środowiska w którym będzie działała docelowa aplikacja.
Poniżej źródło przykładowego zbioru testów i wyniki:
<?php require_once 'part.php'; $obiekt = new PART(); $obiekt->checkConfigHasValue('display_errors', 0) ->checkPDO() ->checkPDODriver('mysql') ->checkPHPVersion(5.4) ->checkDisableMagicQuotes() ->checkDefaultTimezone('Europe/Warsaw') ->checkNotWindowsServer();
Wynik konsolowy:
PHP Applications Requirements Tester - Report Warning: The CLI environment may be different from web environment Test name Result Expected Environment ================================================================================ Config [display_errors] OK 0 Extension loaded [PDO] OK PDO driver [mysql] OK PHP version OK 5.4 [>=] 5.4.9-4ubuntu2.3 Config [magic_quotes_gpc] OK 0 Config [magic_quotes_runtime] OK 0 Config [magic_quotes_sybase] OK 0 Default timezone failure Europe/Warsaw Europe/Berlin Not Windows OS serwer OK Warning: The CLI environment may be different from web environment
Na załączonych raportach widać, różnicę pomiędzy uruchomieniem testu z konsoli i przeglądarki – w pierwszym wypadku display_errors
jest wyłączone zgodnie z oczekiwaniami, w drugim przeciwnie.