První aplikace podle návodu – Index.php se nezpracuje

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
mikon
Člen | 3
+
0
-

Ahoj,
předně se omlouvám za velmi triviální dotaz, jsem naprostý začátečník. Mám následující problém:

Konfigurace:

  • win XP SP2
  • Apache 2.2.21
  • PHP 5.3.8
  • Nette 0.9.6
    • Laděnka zapnuta ve vývojovém režimu
    • Adresář app/temp vymazán
    • do adresářů app/log a app/temp lze zapisovat

Instaloval jsem si Nette podle návodu a vyzkoušel Requirements Checker – proběhlo OK.
Podle návodu jsem zkoušel dát dohromady první aplikaci. Problém je v tom, že po zadaní adresy: „localhost:8080/TodoList/document_root/index.php“ na mě vypadne hláška „Forbidden.“ Zkusil jsem tedy
odtsranit soubor .htaccess z document_rootu, ale tentokrát okno akorát krátce problikne. Prostě skončím v adresáři document_root a tím to hasne. V souboru access.txt v Apachi je o tom tato hláška:
GET /TodoList/document_root/ HTTP/1.1" 200 501.
Jiné .php soubory jsou ale v tomtéž adresáři zpracovávány – zkusil jsem přejmenovat index.php na index2.php a podle očekávání vyhodí Laděnka výjimku NBadRequestException.

Pro kontrolu jsem tedy založil adresář pokus – v kořeni web serveru s jediným souborem index.php. Tam přitom vše funguje tak, jak má. Pokud tam přidám .htaccess, chová se podle jeho záznamů také korektně.

Děkuji

pawouk
Člen | 172
+
0
-

Tak v první řadě nechápu proč používáš starou verzi 0.9 když seš začátečík, proč nepoužiješ novou veri 2?
zkus dát do index.php třeba jen echo ‚ahoj‘; die(); Předpokládám že to neproběhne a pak bych hledal chyby v .htaccess ale ne v tomto adresáří, ale v nadřazených adresářích (např.: localhost:8080/TodoList)

Jan Endel
Člen | 1016
+
0
-

Vidím to na problém s Apachem, můžeš sem hodit jeho kofigurák?

mikon
Člen | 3
+
0
-

pawouk:
Ano, neproběhne to. V nadřazených adresářích již žádné .htaccess nejsou.

Konfigurák(vynechal jsem zakomentované řádky):

ServerRoot "D:/Program Files/Apache Software Foundation/Apache2.2"
Listen 8080

LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule setenvif_module modules/mod_setenvif.so

<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>

User daemon
Group daemon

</IfModule>
</IfModule>

ServerName localhost:8080
DocumentRoot "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs"

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

<Directory "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs">
	Options Indexes FollowSymLinks
	AllowOverride All
	Order allow,deny
    	Allow from all
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>

ErrorLog "logs/error.log"
LogLevel debug
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
	CustomLog "logs/access.log" common
</IfModule>

<IfModule alias_module>
	ScriptAlias /cgi-bin/ "D:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/"
</IfModule>
<IfModule cgid_module>
</IfModule>

<Directory "D:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
DefaultType text/plain

<IfModule mime_module>
	TypesConfig conf/mime.types
	AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
</IfModule>

<IfModule ssl_module>
	SSLRandomSeed startup builtin
	SSLRandomSeed connect builtin
</IfModule>

PHPIniDir "D:\Program Files\PHP\"
LoadModule php5_module "D:\Program Files\PHP\php5apache2_2.dll"
Jan Endel
Člen | 1016
+
0
-

Pokud nemáš nastavené aliasy a pracuješ jenom na lokálním stroji, tak by možná stačilo:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Directory>

ale rozhodně tenhle hepšenšus nezkoušej na produkčním :-).

Editoval pilec (5. 10. 2011 20:21)

pawouk
Člen | 172
+
0
-

To je divné, podle toho co píšeš by to mělo blbnout jen v té konkrétní složce (psal jsi že když to dáš do složky pokus tak to funguje) to tedy vypdadá že opravdu někde problém s touto konkrétní cestou. Co se stane když přejmenuješ složku document_root na např. www to pak mohlo fungovat ne?

newPOPE
Člen | 648
+
0
-

Skus do .htaccessu v document_root (alebo www podla toho ako to mas) dat este niekde na zaciatok riadok

Options +FollowSymLinks

Mne toto robilo uz viac krat, a niekedy to nebralo vobec default nastavenia z konfigov

Editoval newPOPE (6. 10. 2011 8:47)

mikon
Člen | 3
+
0
-

Tak nový posun v problému, šlo o kombinaci několika mých chyb:

Zapomněl jsem smazat historii – browser se tak vždy odkazoval na nový cíl přesměrování „/TodoList/document_root/“, takže jakákkoliv změna v index.php neměla vliv. Po vymazání historie a opětovném načtení mi vypadla hláška 301 – permanentně přesměrováno. K tomu přesměrování došlo podle všeho ve skriptu „app/bootstrap.php“ na jehož konci se pak vyvolává metoda „$application->run()“.

I když jsem dal vypisovat jednoduché věci pomocí příkazu echo do index.php, tak se nevypsalo nic a provádění v tichosti přešlo do bootstrap.php. Příčina byla v příkazu „require“ na konci index.php. Po jeho zakomentování se echo-výpisy objevily.

Nicméně, žádná uvítací hláška Nette frameworku nikde (jak je to psané v návodu) – takže nyní se ponořím hlouběji do Nette tříd.