PART – tester hostingu

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

Wynik HTML:
PART wynik

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.

Dodaj komentarz