Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][Symfony2]localhost/.../web/ wyświetla zawartość katalogu zamiast stronę
Forum PHP.pl > Forum > PHP > Frameworki
twojastara
Uczę się Symfony2 z książki Gajdy i od razu, robiąc krok po kroku jak autor pisze, efekty mam nie takie jak autor pokazuje. Nawet pomińmy moje krok po kroku. Wklejając autora pliki przykładowych gotowych projektów efekty są złe.

(wrzucam gotowy projekt do wamp/www/)

Autor po wykonaniu (każdego) przykładu każe obejrzeć projekt pod poniższymi adresami pisząc, że efekt jest taki sam dla każdego adresu:

Dla 1 projektu (wersja autora)
localhost/hello-world/web/app_dev.php/hello-world.html - OK
localhost/hello-world/web/app.php/hello-world.html - OK
localhost/hello-world/web/hello-world.html - 404 Not Found

Dla 2 projektu (wersja autora)
localhost/mountains/web/ - Index of /mountain/web
localhost/mountains/web/valley.html - 404 Not Found
localhost/mountains/web/app.php/valley.html - OK
------
edit: dodaje efekty na symfony 2.6
Dla 2 projektu (wersja moja)
localhost/mountains/web/- wyświetla mi jakiś domyślny napis Homepage. Nie to co trzeba.
localhost/mountains/web/valley.html - 404 Not Found
localhost/mountains/web/app.php/valley.html - An Error Occurred- 404 Not Found(innaczej wyglądający niż ten 404 wyżej)
-------
Gdzie mam szukać przyczyny?


(powoli zacznę wrzucać fragmenty kodu, które autor każe wstawiać robiąc projekt, ale może juz na tym etapie ktoś wie w czym rzecz)
ohm
Sprawdz czy masz plik .htaccess i mod_rewrite wlaczony.
phpion
Masz włączony mod_rewrite? W katalogu web obu aplikacji masz plik .htaccess?
twojastara
W tym poście wklejam zawartość 4 plików .htaccess
Dwa autora robione na Symfony 2.0.10
Dwa moje robione w Symfony 2.6

-----------
edit (edytowałem tez pierwszy post)

/web/.htaccess gotowego projektu autora:
  1. <IfModule mod_rewrite.c>
  2. RewriteEngine On
  3. RewriteCond %{REQUEST_FILENAME} !-f
  4. RewriteRule ^(.*)$ app.php [QSA,L]
  5. </IfModule>


/web/.htaccess moje, nieruszane z Symfony 2.6
  1. # Use the front controller as index file. It serves as a fallback solution when
  2. # every other rewrite/redirect fails (e.g. in an aliased environment without
  3. # mod_rewrite). Additionally, this reduces the matching process for the
  4. # start page (path "/") because otherwise Apache will apply the rewriting rules
  5. # to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl).
  6. DirectoryIndex app.php
  7.  
  8. <IfModule mod_rewrite.c>
  9. RewriteEngine On
  10.  
  11. # Determine the RewriteBase automatically and set it as environment variable.
  12. # If you are using Apache aliases to do mass virtual hosting or installed the
  13. # project in a subdirectory, the base path will be prepended to allow proper
  14. # resolution of the app.php file and to redirect to the correct URI. It will
  15. # work in environments without path prefix as well, providing a safe, one-size
  16. # fits all solution. But as you do not need it in this case, you can comment
  17. # the following 2 lines to eliminate the overhead.
  18. RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
  19. RewriteRule ^(.*) - [E=BASE:%1]
  20.  
  21. # Sets the HTTP_AUTHORIZATION header removed by apache
  22. RewriteCond %{HTTP:Authorization} .
  23. RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  24.  
  25. # Redirect to URI without front controller to prevent duplicate content
  26. # (with and without `/app.php`). Only do this redirect on the initial
  27. # rewrite by Apache and not on subsequent cycles. Otherwise we would get an
  28. # endless redirect loop (request -> rewrite to front controller ->
  29. # redirect -> request -> ...).
  30. # So in case you get a "too many redirects" error or you always get redirected
  31. # to the start page because your Apache does not expose the REDIRECT_STATUS
  32. # environment variable, you have 2 choices:
  33. # - disable this feature by commenting the following 2 lines or
  34. # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the
  35. # following RewriteCond (best solution)
  36. RewriteCond %{ENV:REDIRECT_STATUS} ^$
  37. RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
  38.  
  39. # If the requested filename exists, simply serve it.
  40. # We only want to let Apache serve files and not directories.
  41. RewriteCond %{REQUEST_FILENAME} -f
  42. RewriteRule .? - [L]
  43.  
  44. # Rewrite all other queries to the front controller.
  45. RewriteRule .? %{ENV:BASE}/app.php [L]
  46. </IfModule>
  47.  
  48. <IfModule !mod_rewrite.c>
  49. <IfModule mod_alias.c>
  50. # When mod_rewrite is not available, we instruct a temporary redirect of
  51. # the start page to the front controller explicitly so that the website
  52. # and the generated links can still be used.
  53. RedirectMatch 302 ^/$ /app.php/
  54. # RedirectTemp cannot be used instead
  55. </IfModule>
  56. </IfModule>


Projekt/source files/src/.htaccess w projekcie gotowym autora wygląda tak
  1. deny from all

Projekt/source files/src/.htaccess U mnie ten plik po komendzie generate:bundle wygląda tak:
  1. <IfModule mod_authz_core.c>
  2. Require all denied
  3. </IfModule>
  4. <IfModule !mod_authz_core.c>
  5. Order deny,allow
  6. Deny from all
  7. </IfModule>



a czy przypadkiem linia w /Apache/httpd.conf
  1. #LoadModule rewrite_module modules/mod_rewrite.so

nie powinna być bez komentarza?
Forti
Powinna. Masz wyłączony mod_rewrite przez co htaccess nie działą tak jak powinien.
twojastara
Zgadza się.
Projekty autora wyświetlają się teraz jak trzeba. Moje ciągle do dupy, ale już przynajmniej wiem, że przyczyna jest w plikach projektu.








------------------------------
edit:
Projekt autora (na Symfony 2.0.10) wyświetla się jak trzeba.

W moim projekcie robionym krok po kroku wg podrecznika wygenerowanym w Netbeans na Symfony 2.6. jest taki efekt:

localhost/mountains/web/- 500 Internal Server Error
localhost/mountains/web/valley.html - 404 Not Found
localhost/mountains/web/app.php/valley.html - 404 Not Found

404 z treścią z pliku C:\wamp\www\Mountains\vendor\symfony\symfony\src\Symfony\Bundle\TwigBundle\Resources\views\Exception\error.html.twig

Myślałem, że sobie spokojnie popatrzę na projekt autora porównam z moim projektem i znajdę różnice.

Ale praktycznie w każdym pliku projektu jest pełno różnic. Takich defaultowych jak mniemam, bo autor opisując przykłady krok po kroku o nich nie wspominał.

Gdzie powinienem szukać przyczyn?
Turson
Ksiązka opisuje wczesniejsza wersje niz 2.6 stad roznice. A url do AcmeBundle działa?
twojastara
a jaki to będzie url?

---------
edit

jeśli
localhost/MySite/web/app_dev.php/demo/hello/Dennis- to jest ok
jeśli
localhost/MySite/web/app.php/demo/hello/Dennis - to przekierowuje na
localhost/MySite/web/demo/hello/Dennis - i jest 404 error
Turson
Chyba tylko app_dev ma routing do demo bundle
A nawet na pewno DemoBundle jest tylko dla dev
twojastara
no i co, jakieś wnioski w zwiazku z tym demo?
Turson
Masz routing do localhost/mountains/web/app.php/valley.html ? Czy tam umiesciles po prostu plik bo juz nie wiadomo
twojastara
Po kolejnym przepisaniu przykładu wszystko jest jak trzeba. Jeszcze nie wiem gdzie zrobiłem babola. W międzyczasie wyczyściłem cache przeglądarek więc może to mi przeszkadzało.

---------------------------------
edit



a jak wytłumaczyć to, że w każdej przeglądarce na localhoscie mam wersję projektu z chwili jego tworzenia.

Późniejsze modyfikacje w ogóle nie są aktualizowane mimo restartu całego wampa, mimo twardego odświeżania przeglądarek, wyczyszczenia cache przegladarki, restartu komputera.

Co bym nie robił to wersja pliku
C:\wamp\www\MySite\src\My\LakeBundle\Resources\views\Default\index.html.twig
jest taka jak w chwili kiedy go pierwszy raz edytowałem.

jak zmienię nazwę tego pliku to strona nie pójdzie (error 500), ale jak zmienię np treść nagłówka w tym pliku to nie aktualizuje treści w przeglądarce.
ohm
A testujesz na trybie produkcyjnym czy developerskim? Bo jeszcze czasem cache symphony (app/cache) trzeba wyczyścić smile.gif
twojastara
app/cache?

nie widzę takiego folderu
Turson
To ciekawe bo ja mam smile.gif
Forti
W IDE często tego folderu nie ma. Sprawdź w eksploratorze czy tam finderze (zależnie od systemu).
twojastara
no tak, w eksploratorze pokazuje się.

-----------
edit:

Cytat(ohm @ 12.12.2014, 17:48:45 ) *
A testujesz na trybie produkcyjnym czy developerskim?

Możesz coś więcej o tym napisać?
W jaki sposób przechodzi się między trybami?
Turson
app.php - tryb produkcyjny
app_dev.php - developerski
Na dev domyślnie cache jest wyłączony i masz dostępny panel debugowania
twojastara
rozumiem.
a jest jakiś powód bym nie zmieniał ustawień i nie wyłączał cache dla każdego trybu?
no bo trochę bez sensu co chwilę usuwać cache robiąc kolejne przykłady z książki.
Turson
Dev powinien mieć wyłaczone cache właśnie z tego powodu, żeby nie usuwać co zmianę
twojastara
rozumiem, ja pytam o powód dla którego miałbym te cache przechowywać dla trybu produkcyjnego. Bo na czas nauki chciałbym nie używać cache w ogóle.
Turson
Po prostu ucz się na trybie deweloperskim. Jeżeli wiesz do czego służy cache to zrozumiesz po co on jest na produkcji.
twojastara
dzięki za odpowiedzi. Wrócę z poważniejszymi pytaniami.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.