V produkci: Class XXX has not been found
- Jan Mikeš
- Člen | 771
Zdravim, nevim si uz rady a nemuzu nikde najit chybu.
Na localu vse bezi tak jak ma, na produkci chyba ‚Class HG\Users has not been found.‘
Models\Users.php:
namespace HG;
/**
* Model starající se o tabulku user
*/
class Users extends BaseModel
{
...
}
Config.neon:
services:
database: @Nette\Database\Connection
users: HG\Users
authenticator: HG\Authenticator
sarze: HG\Sarze
product: HG\Product
kdyz smazu sluzby users a authenticator (ktera je na users zavisla) tak to slape i na produkci. Vsechny modely mam v jedne slozce a vsechny maji stejnou definici, proc tedy zrovna konkretni tridu HG\Users robotloader nedokaze najit?
Tempy promazany X krat, beze zmeny. Uplne stejny model Users pouzivam ve 2 dalsich aplikacich a bez problemu, urcite se jedna o nejakou prkotinu kterou jsem prehledl…
- Jan Mikeš
- Člen | 771
Neni prave, local mam W8 a produkce je linux. Nejde mi to do hlavy uz jen kvuli tomu ze naprosto shodna trida (pouze s jinym namespace) mi bezi bezproblemove jinde a dal kvuli tomu, ze robotloader nenajde pouze tuto jednu tridu i presto, ze soubor je umisten ve stejnem adresari jako ostatni modely.
- Ot@s
- Backer | 476
Lexi napsal(a):
Neni prave, local mam W8 a produkce je linux. Nejde mi to do hlavy uz jen kvuli tomu ze naprosto shodna trida (pouze s jinym namespace) mi bezi bezproblemove jinde a dal kvuli tomu, ze robotloader nenajde pouze tuto jednu tridu i presto, ze soubor je umisten ve stejnem adresari jako ostatni modely.
To už je jedno, kdo je kde. Důležité je to, že každý FS z různých OS může jinak přistupovat k názvům souborů/adresářů (mám tím na mysli ignoraci velkých/malých písmen u názvů souborů pod widlema). Zkontroluj si názvy souborů s třídama modelu (popř. celý prostor, kam pouštíš robotloader).
Edit: jestli nepoužíváš robotloader, zkotroluj include/require oproti skutečným názvům knihoven
Editoval Ot@s (11. 10. 2012 12:12)
- Jan Mikeš
- Člen | 771
Robotloader pouzivam.
Vsechny adresare jsou pojmenovane malymi pismeny a vsechny php soubory jsou pojmenovany takto: BaseModel.php, Users.php, Authenticator.php
vsechny modely jsou ve stejnem jmennem prostoru, lisi se pouze nazev tridym vzdy zacinajici velkym pismenem HG\Neco
Nechapu proc robotloader ignoruje pouze ten jeden soubor a zadny jiny, vyzkousim jeste primo require v bootstrapu a uvidim…
- Jan Mikeš
- Člen | 771
„hg\users“;a:3:{s:4:„file“;s:87:„/mnt/data/accounts/h/helsinkigroup/data/www/helsinkigroup.cz/sarze/app/models/Users.php“;s:4:„time“;i:1349951231;s:4:„orig“;s:8:„HG\Users“;}
„hg\users“;a:3:{s:4:„file“;s:51:„C:\xampp\htdocs\helsinki-sarze\app\models\Users.php“;s:4:„time“;i:1349945402;s:4:„orig“;s:8:„HG\Users“;}
Cesta se zda byt v poradku :(
- Jan Mikeš
- Člen | 771
// Create Dependency Injection container from config.neon file
$configurator->addConfig(__DIR__ . '/config/config.neon');
require(__DIR__ . '/models/Users.php');
$container = $configurator->createContainer();
Po pridani require se aplikace rozjede :)) porad me ale zajima kde je chyba, toto neni totiz bezny postup…