W ostatnim wpisie stworzyliśmy wszystkie potrzebne kontenery aby móc na nich postawić aplikację w Symfony. Dziś dokończymy to co zaczęliśmy w ostatnim wpisie(jeśli go ominęliście to znajdziecie go TUTAJ). Aktualnie Symfony jest chyba najbardziej popularnym frameworkiem php’owym, którego najnowsza wersja nosi cyfrę 3. Według oficjalnej dokumentacji najlepszym sposobem na rozpoczęcie zabawy z Symfony jest skorzystanie z oficjalnego instalatora. Dzięki niemu możemy sobie wybierać, którą wersję Symfony chcemy użyć i szybko stworzyć projekt.
Aby to wszystko działało z naszymi kontenerami musimy umieścić nasze pliki Symfony w katalogu, który skonfigurowaliśmy w docker-compose.yml w sekcji application>volumes. Jeśli tak zrobicie to po wejściu na adres ip maszyny na porcie 8001 (jest to port na którym wystawiliśmy serwer nginx) maszyny powinniście zobaczyć następujący widok.
Jeśli wyświetla wam się komunikat** File not found** to pierwsze co powinniście sprawdzić to czy foldery zostały odpowiednio podmontowane. Żeby to sprawdzić zalogujcie się na kontener php i zobaczcie czy widzicie wszystkie pliki w /var/www/symfony. Jeśli nie to znaczy, że katalog nie został podmontowany. U mnie pomogło puszczenie jeszcze raz docker-machine-nfs dla używanej maszyny. Jeśli nie korzystacie z docker-machine-nfs lub macie inne problemy to piszcie to może uda nam się razem znaleźć rozwiązanie problemu
Wygląda na to że wszystko działa jednak trzeba pamiętać że podczas tworzenia oprogramowania najwięcej czasu spędzicie w trybie developmentu. Aby do niego wejść należy dopisać do adresu /app_dev.php/. Jak wejdziecie na ten adres to powinniście zobaczyć taki komunikat
You are not allowed to access this file. Check app_dev.php for more information.
Aby to naprawić musimy się udać do pliku web/app_dev.php. Za nasz komunikat odpowiada ten kawałek kodu
if (isset($_SERVER['HTTP_CLIENT_IP']) || isset($_SERVER['HTTP_X_FORWARDED_FOR']) || !(in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1']) || php_sapi_name() === 'cli-server') ) { header('HTTP/1.0 403 Forbidden'); exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); }
Aby się go pozbyć najłatwiej jest zakomentować ten odcinek kodu. Teraz wróćmy do strony. Powinniśmy znowu widzieć nasz ekran powitalny ale z dodatkowym paskiem na dole ekranu.
Jest to tak zwany pasek profilera. Jest to bardzo użyteczne narzędzie z którego będziecie korzystać częściej niż ze strony. Jego pełną wersję można znaleźć pod adresem /app_dev.php/_profiler. Powinniście zobaczyć błąd związany z przechowywaniem sesji.
Dla naszych celów wystarczy jak przejdziemy do pliku_ app/config/config.yml_ i znajdziemy opcje session. Aby działało wystarczy że zakomentujemy te dwie linie
handler_id: session.handler.native_file save_path: "kernel.root_dir%//assets/var/sessions/kernel.environment%"
i zamiast nich wpiszemy coś takiego
handler_id: ~
I voil’a teraz wszystko powinno działać.
W następnym wpisie pokaże jak skonfigurować symfony by działał jako REST serwer.