Nefunkční presentery na ostrém hostingu
- Šaman
- Člen | 2665
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.
- gula23
- Člen | 5
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 | 2665
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>
?>
- gula23
- Člen | 5
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 | 2665
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
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