Jedna aplikace s moduly, dva stroje a podivné chování

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

Nazdárek,

mám napsanou aplikaci, která využívá moduly. Běží na PHP 5.2.5 a Nette 0.9.2 (zkoušel jsem i 0.9.3). Na desktopu, kde jsem ji vyvíjel jede vše jak má. Když ji ale překopíruji na laptop, tak už to nefunguje.. nebo nefunguje aspoň z části.

Routy mám nastavené takto:

$router = $application->getRouter();

$router[] = new Route('index.php', array(
	'module' => 'Front',
	'presenter' => 'Login',
	'action' => 'default',
), Route::ONE_WAY);

$router[] = new Route('<module>/<presenter>/<action>/<id>', array(
	'module' => 'Front',
	'presenter' => 'Login',
	'action' => 'default',
	'id' => NULL,
));

Adresářová struktura v app:

AclModule
\ (na stejném principu jako FrontModule)
FrontModule
\ presenters
 \ LoginPresenter.php
\ templates
 \ Login
   \ default.phtml
 \ @layout.phtml
log
models
presenters
\ BasePresenter.php
\ ErrorPresenter.php
temp
templates
\ Error
 \ 404.phtml, 500.phtml

Když aplikaci spustím (a to jak přes virtuální doménu nebo přímo přes localhost/…), tak se mi úvodní stránka (LoginPresenter v FrontModule) zobrazí. Lze se taky normálně přihlásit. Po úspěšném přihlášení chci přejít do jiného modulu přes <a href="{link :Acl:Users:}">GUI Acl</a>, ale to už se nepodaří. Odkaz mě správně hodí na adresu http://<virtualdomain>/acl/users/ (stejně tak se děje i bez virtuální domény), ale požadovaný obsah se už nezobrazí. Hodí to chybovou hlášku generovanou Apachem, že požadovaná stránka neexistuje. To se mi zdálo divné, a proto jsem se podíval do Apache/logs/arror.log kde byl tento záznam:

[Fri Apr 09 13:51:59 2010] [error] [client 127.0.0.1] File does not exist: C:/Apache/WWW/BC/GUI_Acl/document_root/acl, referer: http://bc/

Není chybou, že to přesměrovává do složky acl místo toho, aby to vedlo jen do document_root? Ví někdo, čím je to způsobené a jak to vyřešit?

Předem děkuji za každou radu!

Bernard

despiq
Člen | 320
+
0
-

jaky je rozdil mezi nastavenim desktopu a laptopu u apache a php?

Vyki
Člen | 388
+
0
-

A není to hláška, která vypadá jako z apache, ale dole je malým písmem napsáno Nette framework?

Editoval Vyki (9. 4. 2010 20:00)

Bernard Williams
Člen | 207
+
0
-

To by mě taky zajímalo. U obou je to Apache 2.0.63 a PHP 5.2.5. Jediný rozdíl je v PostgreSQL – na desktopu je 8.4 a na laptopu je to 8.2, ale přihlášení, které bere data z DB funguje na obou strojích v poho. Oba stroje používají stejný httpd.conf – jediná změna je snad v názvech disků a že na desktopu mám navíc spuštěný modul PDO a SQLite. Jako poslední rozdíl a možná zásadní je v OS. Na desktopu je to Win XP a na laptopu Win 7. Před chvilkou jsem zkoušel použít ukázkový příklad na použití modulů z distribuce a chová se to stejně špatně jako v mém případě.

Funguje někomu ukázka použití modulů (modules-usage) z distribuce na Windows 7?

Bernard Williams
Člen | 207
+
0
-

Vyki napsal(a):

A není to hláška, která vypadá jako z apache, ale dole je malým písmem napsáno Nette framework?

Titulek: 404 Not Found

Not Found

The requested URL /BC/GUI_Acl/document_root/acl/users/ was not found on this server.
Apache/2.0.63 (Win32) DAV/2 PHP/5.2.5 Server at localhost Port 80
Bernard Williams
Člen | 207
+
0
-

Hurá!! Problém se mi podařilo najít! Jedná se o parametr AllowOverride v httpd.conf. U adresáře s webem byl nastavený správně:

<Directory "F:/Apache/WWW">
  Options Indexes Includes FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

ale o pár řádků níž se nacházel znovu a podle všeho ten výše uvedený přepisoval:

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride None

Stačilo jej tedy přepsat na:

AllowOverride All

a už vše šlape! Ještě jednou upozorňuji, že httpd.conf jsem měl v obou případech stejný (kontroloval jsem to), takže problém bude nejspíš v operačních systémech. Možná by nebylo od věci to k modulům někam poznamenat.. aby se s tím někdo další nemusel taky celý den trápit.

Editoval Bernard Williams (9. 4. 2010 20:44)

Vyki
Člen | 388
+
0
-

Osobně mi ukázka z mobile usage funguje, ale používám Nette 1.0dev. Tam by už měla být defaultně pohřbena stará struktura modulů. V BasePresenteru vypni staré moduly myslím, že takto: $this->oldModuleMode = FALSE. Vyzkoušej i Nette 1.0dev jestli to bude běhat. EDIT: Tak už nic :o)

Editoval Vyki (9. 4. 2010 20:52)

Bernard Williams
Člen | 207
+
0
-

Vyki napsal(a):

EDIT: Tak už nic :o)

Každopádně díky za tvůj čas a snahu.