Nefunkční presentery na ostrém hostingu

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

Aplikace, která mi na localhostu normálně běžela mi při přechodu na hosting nefunguje a to tím stylem, že stránky, které jsou pouze statické(jen html kód v template) se zobrazí v pořádku, ale stránky, kterým obsah plním pomocí presenterů hlásí 404 not found.
Díky za pomoc

Šaman
Člen | 2635
+
0
-

A máš tam .htacces? A dobře nastavené routy? A jestli je to odladěné na lokále a blbne to až na ostrém webu, tak ho nech projet checkerem (v distribuci Nette, v adresáři tools). Případně si na ten hosting nahrát skeleton a zkusit jestli se rozběhne.

Ale na konkrétní radu jsi nám poskytl moc málo informací. Jestli ten hosting projde checkerem, tak to tipuji na ten .htacces.

iguana007
Člen | 970
+
0
-

Tipnul bych si, že si zapomněl zakomentovat, resp. upravit parametr RewriteBase v htaccess – nebo – promazat temp po uploadu, ale spíše ta první varianta :)

gula23
Člen | 5
+
0
-

Routování jsem ještě vůbec neřešil – to mi zatím vůbec nefunguje. Jinak skeleton už jsem zkusil, ten mi běžel v pořádku a temp jsem taky promazal. Do logu mi tohle žádnou chybu nezapisuje, takže moc nevím od čeho se odrazit

# disable directory listing
Options -Indexes

# configure PHP
# <IfModule mod_php5.c>
# php_flag magic_quotes_gpc off
# php_flag register_globals off
# php_flag zend.ze1_compatibility_mode off
# </IfModule>

# mod_rewrite
<IfModule mod_rewrite.c>
# RewriteEngine On
RewriteBase /

# front controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]
</IfModule>

Šaman
Člen | 2635
+
0
-

Odkomentuj RewriteEngine On a zakomentuj RewriteBase /.

Nebo tam nahraj ten ze skeletonu:

<?php
# disable directory listing
Options -Indexes

# configure PHP
# <IfModule mod_php5.c>
#    php_flag magic_quotes_gpc off
#    php_flag register_globals off
#    php_flag zend.ze1_compatibility_mode off
# </IfModule>

# mod_rewrite
<IfModule mod_rewrite.c>
	RewriteEngine On
	# RewriteBase /

	# front controller
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]
</IfModule>

?>
iguana007
Člen | 970
+
0
-

Jak ti poradil Šaman, tak může ještě zlobit tento řádek:

# disable directory listing
Options -Indexes

Některé hostingy mají tuto direktivu zakázanou, tak kdyby to nešlo ani s tim htaccess od Šamana, tak zakomentuj výše zmíněný řádek.

gula23
Člen | 5
+
0
-

rozhodl jsem se to debuggovat úplně od začátku a zjistil jsem, že tu 404 to hází kvůli chybě připojení k DB. – asi proto fungují jen ty statické stránky. Už jsem prošel několik vláken o nastavení config.ini ale pořád to nefunguje. Moje config.ini vypadá takto:

[common]
; PHP configuration
php.date.timezone = "Europe/Prague"
php.iconv.internal_encoding = "%encoding%"
php.mbstring.internal_encoding = "%encoding%"

database.driver = mysqli
database.lazy = TRUE
database.charset = utf8

; services
service.Nette-Security-IAuthenticator = UsersModel

service.Nette-Loaders-RobotLoader.option.directory[] = %appDir%
service.Nette-Loaders-RobotLoader.option.directory[] = %libsDir%
service.Nette-Loaders-RobotLoader.run = TRUE

[production < common]


database.host = localhost
database.username = xxx
database.password = xxx
database.database = xxx

k DB se připojuji v BaseModelu:

abstract class BaseModel extends Object {

    private static $db;

    public function getDb() {
        if (self::$db == NULL) {
            self::$db = new DibiConnection(Environment::getConfig('database'));
        }

        return self::$db;
    }
}

Nevidíte v tom někdo chybu? Do logu tohle opět nic nezapíše. (jinak mi log funguje)

Šaman
Člen | 2635
+
0
-

Jestli máš zaplou laděnku, tak by ti chybu v připojení k DB přeložilo na výjimku. A pokud ji nemáš zapnutou, tak by ti to házelo chybu 500. Takže tím to nebude.

Ta 404 může být v .htacces, routách, adresářové struktuře, možná i jinde ale v DB ne. Takže to připojení bych řešil až tehdy, až se dostaneš na červenou stránku laděnky s chybovou hláškou.

gula23
Člen | 5
+
0
-

Taky jsem si to nejdřív myslel, ale routy mám stále ještě vypnuté.
Když jsem dneska odhaloval v čem je chyba, tak jsem si vytvořil uplně jednoduchý presenter a model. Když metoda v modelu vrátí jen nějakou konstatnu, tak to v pohodě běží. Ale jakmile v metodě modelu zavolám databázi, tak to lehne na 404. Už opravdu nevím kde hledat chybu