Konfiguracja web serwera tak by zyskał dostęp do katalogu symfony_data/web/sf/
Krzysztof Karolczak | 08.08.2008Radość z uruchomienia pierwszego projektu w Symfony bardzo często rozwiewana jest następującym komunikatem wyświetlanym na stronie:
Congratulations! You have successfully created your symfony project.
Project setup successful
This project uses the symfony libraries. If you see no image in this page, you may need to configure your web server so that it gains access to the symfony_data/web/sf/ directory.
Prawidłowa konfiguracja serwera www wydaje się najbardziej problematyczną częścią instalacji tego frameworka. Całe szczęście nie jest ona tak trudna jak może się wydawać. Ten krótki przewodnik opisuje dwie metody pozwalające szybko i sprawnie ustawić Apacha tak by polubił Symfony ;).
Zakładam że posiadacie poprawnie zainstalowaną Symfony (jeśli nie opis instalacji znajduje się tu). Ja osobiście pracuje na serwerze www zainstalowanego z paczki WAMP (Apache+MySQL+PHP) i taką instalację odzwierciedlają ścieżki, którymi posługuję się w przykładach.
Sposób 1 - ustawianie virtual hosta
Stworzenie dla każdego swojego projektu w Symfony wirtualnego hosta wydaje się najlepszym sposobem ich zarządzania w fazie tworzenia.
Zatem do dzieła - najpierw potrzebujemy znaleźć katalog zawierający pliki konfiguracyjne Apacha (u mnie będzie to C:\wamp\bin\apache\apache2.2.6\conf) i otworzyć httpd-vhosts.conf (który jest w podkatalogu extra - C:\wamp\bin\apache\apache2.2.6\conf\extra). W nim należy usunąć lub zakomentować (dodając ‘#’ na początku linijki) wszystkie linie co do których nie mamy pewności co robią
(jeśli nie my je napisaliśmy to są to pewnie tylko przykłady konfiguracji vhostów). I najważniejsze - na końcu naszego pliku dodajemy następujące linijki:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName twoja_nazwa
DocumentRoot “c:/wamp/www/twoj_projekt/web”
DirectoryIndex index.php
Alias /sf c:/wamp/bin/php/php5.2.5/PEAR/data/symfony/web/sf
<Directory “c:/wamp/www/twoj_projekt/web”>
Options Indexes FollowSymlinks ExecCGI
AllowOverride All
Order allow,deny
Allow from All
</Directory>
<Directory “c:/wamp/bin/php/php5.2.5/PEAR/data/symfony/web/sf”>
Allow from All
</Directory>
</VirtualHost>
Oczywiście w linijkach ‘Alias /sf c:/wamp/bin/php/php5.2.5/PEAR/data/symfony/web/sf’ i <Directory “c:/wamp/bin/php/php5.2.5/PEAR/data/symfony/web/sf”> należy zastąpić ścieżki poprawną ścieżką do symfony data. Analogicznie w linijkach DocumentRoot “c:/wamp/www/twoj_projekt/web” oraz <Directory “c:/wamp/www/twoj_projektt/web”> należy umieścić ścieżkę do katalogu web swojego projektu. Możemy też określi własną nazwę wirtualnego hosta umieszczając ją zamiast twoja_nazwa w linijce ‘ServerName your_server_name’.
Teraz musimy upewnić się, że w pliku httpd.conf (główny plik konfiguracyjny Apacha, który u mnie znajduje się w katalogu C:\wamp\bin\apache\apache2.2.6\conf) linijka ‘Include conf/extra/httpd-vhosts.conf‘ nie jest zakomentowana (nie ma ‘#’ przed nią).
Teraz - po zresetowaniu Apacha - jeśli wpiszemy w przeglądarce http://localhost/ nasza strona powitalna Symfony powinna zawierać wszystkie obrazki.
Ale może być jeszcze lepiej ;). Możemy zadeklarować lokalnie własną “domenę” przez dodanie linijki ‘127.0.0.1 twoja_nazwa‘ do pliku host (C:\WINDOWS\system32\drivers\etc\) . Teraz wpisanie URLa http://twoja_nazwa/ zabierze nas bezpośrednio do strony naszego projektu. Jedyna rzecz o której należy pamiętać to to, że linijka ‘127.0.0.1 localhost‘ powinna być pierwszą linijką pliku host. A BTW - jego edycja może wymagać uprawnień administratora.
Sposób 2 - ten głupi
Jeśli powyższa metoda nie działa - zawsze można spróbować skopiować zawartość ścieżka_do_symfony_data/web/sf/ do twój_projekt/web/ (zatem w moim wypadku byłoby to przeniesienie plików z katalogu C:\wamp\bin\php\php5.2.5\PEAR\data\symfony\web\sf do C:\wamp\www\your_project\web directory). Nie jest to oczywiście najczystsze rozwiązanie - jednym z miusów jest to, że po updacie Symfony może się okazać, że będziemy musieli przekopiować ten folder ręcznie do wszystkich swoich projektów, mogą wystąpić też problemy z zamrażaniem projektów (polecenie symfony freeze kopiuje wszystkie biblioteki Symfony do naszego projektu i przygotowuje go do wrzucenia na serwer produkcyjny). Ale lepsze to niż nic, prawda?






Oh, thank you. I had to resort to Method 2 (the
Mark | 08.10.2008Oh, thank you.
I had to resort to Method 2 (the stupid way) but it did work.
I am a Mac convert (from Windows) since summer, 2007. When I initially set up my machine and struggled to get MySQL and PHP and PEAR working, my document root was set in a different folder from the default ‘Sites’ (don’t ask me how). AND, I do a number of prototypes, none prior to the latest are Symfony-based, each of which lives in a different folder. So changing httpd.conf to look at virtual hosts broke other things.
Someday I hope to get back to the standard OSX folder configuration for localhost, but thanks to your help I am running today!
mark
Thank you for the 15 minute guide to install Symfony
D. Zook | 06.11.2008Thank you for the 15 minute guide to install Symfony on a WAMP platform. It worked great. I am using PHP 5.2.6 and had the data access error described on this page. Method one did not work for me. I followed the directions exactly but did not quite understand the process so there was probably something I typed incorrectly.
The stupid way worked fine though.
Thanks for the help.