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:
- utworzenie konta FTP z dostępem do katalogu
/strona
(oczywiście nazwy każdy dobiera indywidualnie); - skierowanie domeny/subdomeny na katalog
/strona/web
, serwis musi być bez separacji; - przegranie plików projektu do katalogu
/
konta FTP (tzn. do katalogu/strona
całego konta hostingowego); - dodanie pliku
php.ini
z poniższymi wpisami:short_open_tag = Off magic_quotes_gpc = Off
- w pliku
web/.htaccess
należy dodać komentarze w linijkach:RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
- 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
) - 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”.
A jak na home.pl wywołać z crona polecenie konsolowe w stylu:
app/console costam:ahp:wyslij-powiadomienia;
???
Nie wiem jak to wygląda w tej chwili, wtedy wyglądało to w ten sposób, że w głównym katalogu konta hostingowego tworzyło się plik z nazwą według wzorca, a w nim wywołanie, np.
< ?php `php53-cli NazwaKataloguProjektu/app/console nazwa:komendy:konsolowej`;