Miesięczne archiwum: luty 2014

Uruchomienie Symfony2 na home.pl

Ostatnio miałem okazję uruchamiać na hostingu współdzielonym od home.pl aplikację w Symfony2. Uruchomienie było testowe, ale jak zwykle były problemy.

Google podpowiedziało rozwiązanie umieszczone na forum PHP. Opis jest szczegółowy, jednak w moim wypadku efekt nie działał, więc zacząłem sam kombinować. Poniżej moje zapiski:

  1. utworzenie konta FTP z dostępem do katalogu /strona (oczywiście nazwy każdy dobiera indywidualnie);
  2. skierowanie domeny/subdomeny na katalog /strona/web, serwis musi być bez separacji;
  3. przegranie plików projektu do katalogu / konta FTP (tzn. do katalogu /strona całego konta hostingowego);
  4. dodanie pliku php.ini z poniższymi wpisami:
    short_open_tag = Off
    magic_quotes_gpc = Off
  5. w pliku web/.htaccess należy dodać komentarze w linijkach:
    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
  6. jeżeli wersja PHP nie jest przełączona w panelu zarządzania hostingiem, trzeba to zrobić w pliku web/.htaccess dodając linijki:
    :Location /*.php
    Use php53 
    :Location

    minimum dla Symfony2 to PHP 5.3.3, ale home.pl udostępnia też PHP 5.4 (Use php54)

  7. po wyczyszczeniu cache i skonfigurowaniu aplikacja powinna już działać.

Aktualizacja [19.04.2014r]

Niestety uruchomienie Symfony2 na hostingu współdzielonym home.pl sprawia problemy. Problemy są o tyle dziwne, że są tymczasowe. Wygląda to tak, że po wgraniu aplikacja działa, po czasie zupełnie się „krzaczy” (przykład poniżej), następnie po czasie znów działa.

Fatal error: Uncaught exception 'InvalidArgumentException' with message 'The file "/config/routing.yml" does not exist.' in /panel/vendor/symfony/symfony/src/Symfony/Component/Config/FileLocator.php:48 Stack trace: 
#0 /panel/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Config/FileLocator.php(54): Symfony\Component\Config\FileLocator->locate('/config/routing...', NULL, true) 
#1 /panel/vendor/symfony/symfony/src/Symfony/Component/Routing/Loader/YamlFileLoader.php(49): Symfony\Component\HttpKernel\Config\FileLocator->locate('/config/routing...') 
#2 /panel/vendor/symfony/symfony/src/Symfony/Component/Config/Loader/DelegatingLoader.php(52): Symfony\Component\Routing\Loader\YamlFileLoader->load('/config/routing...', NULL) 
#3 /panel/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Routing/DelegatingLoader.php(58): Symfony\Component\Config\Loader\DelegatingLoader->load('/config/routing...', NULL) 
#4 /panel/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Routing/Router.php(54): Symfony\Bundle\Framewor in /panel/vendor/symfony/symfony/src/Symfony/Component/Config/FileLocator.php on line 48

Nie potrafię wyjaśnić przyczyny tego problemu, ale idąc za radą DOK usługodawcy zmieniłęm wersję PHP z 5.4 na 5.3 i od około miesiąca wszystko działa.

Może komuś ta informacja pomoże, chociaż dla mnie ten problem i jego specyfika jest dość niezrozumiała. Przywykłem do tego, że na danym serwerze aplikacja albo działa, albo nie. Natomiast w tym wypadku można powiedzieć, że „czasami”.