Posługując się WAMP serwerem postanowiłem wypróbować mikro-freamework Fat-Free. Głównie ze względu na to, że chciałem napisać prostą i małą aplikajcę, a Cake czy Symphony to kobyły. Poza tym F3 oferuje routing, templatki, mini-ORM i ogólnie takie jakby MVC. Wiadomo, narzędzie musi być dostosowane do zadania, proste zadanie – proste narzędzia.
Ściągnąłem, rozpakowałem do katalogu, odpaliłem i nie działa. Wyświetla mi się pusta strona. Zaglądam do katalogu, do index.php i prubuję debugować. I do odpalenia metody
F3::run();
wszystko śmiga, później nic sie nie wyświetla, pusta strona. Próbuję ustawić wewnętrzny debugger frameworka:
F3::set('DEBUG',3);
Nadal nic się nie wyświetla, pusta strona. Przeglądam dalej plik index.php i znajduję to co powinno sie wyświetlić:
echo Template::serve('welcome.htm');
Pomyślałem, że może plik welcome.htm jest pusty, więc zaglądam do niego i widzę pełną soczystej treści stronę, która powinna być wyświetlona. Dalej to samo nic się nie wyświetla, pusta strona, a ja nie wiem o co chodzi.
Zaglądam w źródło strony może tam mnie olśni, niestety nic, źródło strony to samo, pusta strona. Porzucam F3 na rzecz Flight (http://flightphp.com/), jest jeszcze bardziej micro i niestety nie ma żadnego wsparcia dla Baz Danych, trzeba to sobie dopisać.
Po jakimś czase potrzebuję napisać aplikację intensywnie wykorzystująca bazę danych i przydałby mi się ten mini-ORM. Przyglądam się więc jeszcze raz F3. tym razem bardzo dokładnie. I przeglądając całe źródło strony linijka po linijce rozwinąłem to co pominiąłem wcześniej. Zwiniętą linię kodu w której pobierany jest plik CSS.
<style type="text/css"> {{ Web::minify('ui/',array('style.css'),FALSE) }} </style>
i tu znajduje się wydruk z debuggera i poszukiwany od stuleci błąd:
<style type="text/css"> <html> <head> <title>500 Internal Server Error</title> </head> <body> <h1>Internal Server Error</h1> <p><i>PHP extension sockets is not enabled</i></p> <p>#0 ***/fat3/lib/base.php:1749 F3::error(500,'PHP extension sockets is not enabled')<br />
a jego rozwiązanie mega-banalne. Wystarczy włączyć w PHP moduł:
php_sockets
I jest pięknie. Wszystko się wyświetla, nie ma pustej strony, a ja mogę korzystać z mini-ORM 🙂