Forum » Programiranje » [PHP] Composer ne najde/vključi razreda izven vendor mape
[PHP] Composer ne najde/vključi razreda izven vendor mape
krenpac ::
Naletel sem na problem, ki ga rešujem že zadnji 2 uri in enostavno ne najdem rešitve.
Uporabljam composer, vse vključene knjižice, ki so znotraj vendor mape, se lepo vključijo na stran. Ročno sem še ustvaril nekaj razredov znotraj mape controllers in teh mi pa ne vključi in ne vključi. Na localhost (windows) mi vse deluje 100% brez težav, ko presnamem na strežnik (linux) pa ne deluje.
Še koda...
Torej, bom poskusil biti izčrpen, če kdo potrebuje še kak podatek, naj kar vpraša.
Struktura map
..domains/stran.com/private_html/app/controllers/mainsite (tu notri so controllers, npr. HomeController.php itd. - jih ne morem vključiti)
..domains/stran.com/vendor/ (pač vključene knjižice - jih brez težav vključim)
Del vsebine, vrnejno polje, mape autoload_psr4.php (..domains/stran.com/vendor/composer/autoload_psr4.php)
Če dumpam autoload.php...
Torej naj bi bila prava mapa "/home/*/domains/*.com/app/controllers" in dejansko to tudi je prava mapa ampak mi PHP kljub temu javi spodnjo napako...
In naj še enkrat omenim, na localhost vse deluje 100% brez težav, na strežniku pa noče in noče pa sem spremenil že 1001 stvar in sploh ne vem več kaj naj še spremenim, ker meni se zdi, da bi enostavno moralo delati ampak ne deluje zato vas lepo prosim za pomoč.
Uporabljam composer, vse vključene knjižice, ki so znotraj vendor mape, se lepo vključijo na stran. Ročno sem še ustvaril nekaj razredov znotraj mape controllers in teh mi pa ne vključi in ne vključi. Na localhost (windows) mi vse deluje 100% brez težav, ko presnamem na strežnik (linux) pa ne deluje.
Še koda...
Torej, bom poskusil biti izčrpen, če kdo potrebuje še kak podatek, naj kar vpraša.
Struktura map
..domains/stran.com/private_html/app/controllers/mainsite (tu notri so controllers, npr. HomeController.php itd. - jih ne morem vključiti)
..domains/stran.com/vendor/ (pač vključene knjižice - jih brez težav vključim)
Del vsebine, vrnejno polje, mape autoload_psr4.php (..domains/stran.com/vendor/composer/autoload_psr4.php)
... 'Twig\\' => array($vendorDir . '/twig/twig/src'), <- deluje 'Controllers\\' => array($baseDir . '/app/controllers'), <- ne deluje ..
Če dumpam autoload.php...
... ["Controllers\"]=> array(1) { [0]=> string(71) "/home/*/domains/*.com/vendor/composer/../../app/controllers" } ...
Torej naj bi bila prava mapa "/home/*/domains/*.com/app/controllers" in dejansko to tudi je prava mapa ampak mi PHP kljub temu javi spodnjo napako...
[Tue Jul 11 14:32:09.901844 2017] [fcgid:warn] [pid *:tid *] [client *] mod_fcgid: stderr: PHP Fatal error: Uncaught Error: Class 'Controllers\\MainSite\\HomeController' not found in /home/*/domains/*.com/init/boostrap.php:211
In naj še enkrat omenim, na localhost vse deluje 100% brez težav, na strežniku pa noče in noče pa sem spremenil že 1001 stvar in sploh ne vem več kaj naj še spremenim, ker meni se zdi, da bi enostavno moralo delati ampak ne deluje zato vas lepo prosim za pomoč.
- spremenilo: krenpac ()
krenpac ::
Classe vključujem preko call_user_func_array() ampak to tako ne spremeni ničesar. Tudi, če jih vključim ročno, mi izpiše zgornjo napako. Torej težava je nekeje v tem frdamanem autoload.php, ker ne najde prave poti do class-a, pa čeprav se meni zdi, da je pot čisto prava + kot sem že omenil, koda na localhost deluje :/
Zgodovina sprememb…
- spremenilo: krenpac ()
usoban ::
..domains/stran.com/private_html/app/controllers/mainsite
in
/home/*/domains/*.com/vendor/composer/../../app/controllers
mi ne izgledata enaki poti (kje se je izgubil private_html?)
Ce ti zadeva deluje lokalno, na serverju pa ne, se 3x preveri ce poti klapajo.
krenpac ::
..domains/stran.com/private_html/app/controllers/mainsite
in
/home/*/domains/*.com/vendor/composer/../../app/controllers
mi ne izgledata enaki poti (kje se je izgubil private_html?)
Tudi nista in prav je tako. Vendor, controllerji, models... itd. so izven "public/private" mape zaradi varnosti (tako imajo urejeno tudi vsi php frameworki, da se onemogči neposredni dostop).
Ce ti zadeva deluje lokalno, na serverju pa ne, se 3x preveri ce poti klapajo.
Preveril poprek in počez in sem že omenil, da se mi zdi, da je pot enostavno pravilna, čeprav PHP javi napako. Sem se še malo igral z namespaces in potmi z metodo ddPsr4() https://getcomposer.org/doc/01-basic-us... (čisto spodaj) ampk ni bilo sprememb. Mi je pa nekako uspelo locirati napako, rešitve še nisem našel. Očitno je težava spodaj (in ne v poteh, ki so očitno pravilne)...
Torej spodnje NE DELA
$class='Controllers\MainSite\HomeController'; $method = 'index'; call_user_func_array(array(new $class, $method), ...$vars);
Tole PA DELA (če ročno vpišem)
call_user_func_array(array(new Controllers\Mainsite\HomeController, 'index'), ...$vars);
??? Na localhost eno in drugo dela, na strežniku dela le prva verzij. Kakšna ideja, kako zgornje popraviti, da bo delalo tudi strežniku? Imam routing, tako da ročno vpisovanje jasno odpade. Potrebujem delujočo 1. rešitev. Pa če mogoče kdo ve, me zanima, zakaj zaboga sploh 1. verzija na strežniku ne deluje? Meni res ni jasno.
Zgodovina sprememb…
- spremenilo: krenpac ()
krenpac ::
Ker ne morem več urejati sporočila, na STEŽNIKU DELUJE LE 2. VERZIJA, potrebujem pa delujoči 1.
krenpac ::
Ker se mi očitno že malo blede, bom raje dal kar printscreene.
Torej, za demo sem ustvaril 3 instance istega class. Zdaj pa poglejte to, ko pokličem vse tri, tretja instanca deluje, če pokličem samo 3., pa ne deluje. Meni se res že malo meša. A vidi kdo kje je napaka? 2. primer se loči od 1. le po tem, da sem prvi dve instanci zakomentiral, nič drugega (pa ne spreglejte exit() -> call_user_fun_array() se ne kliče).
WTF?
1. primer
Vse ok, v logu ni nobenega poročila o napakah.
2. primer (le prvi dve instanci sem zakomentiral)
Napaka iz loga...
[Wed Jul 12 09:38:48.062545 2017] [fcgid:warn] [pid .:tid .] [client .] mod_fcgid: stderr: PHP Fatal error: Uncaught Error: Class 'Controllers\\MainSite\\HomeController' not found in /home/./domains/..com/init/boostrap.php:244
Torej, za demo sem ustvaril 3 instance istega class. Zdaj pa poglejte to, ko pokličem vse tri, tretja instanca deluje, če pokličem samo 3., pa ne deluje. Meni se res že malo meša. A vidi kdo kje je napaka? 2. primer se loči od 1. le po tem, da sem prvi dve instanci zakomentiral, nič drugega (pa ne spreglejte exit() -> call_user_fun_array() se ne kliče).
WTF?
1. primer
Vse ok, v logu ni nobenega poročila o napakah.
2. primer (le prvi dve instanci sem zakomentiral)
Napaka iz loga...
[Wed Jul 12 09:38:48.062545 2017] [fcgid:warn] [pid .:tid .] [client .] mod_fcgid: stderr: PHP Fatal error: Uncaught Error: Class 'Controllers\\MainSite\\HomeController' not found in /home/./domains/..com/init/boostrap.php:244
Zgodovina sprememb…
- spremenilo: krenpac ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | ios swift 1.2Oddelek: Programiranje | 1718 (1124) | detroit |
» | SMS iz linuxaOddelek: Pomoč in nasveti | 4743 (2299) | Apple |
» | Magento - Sistem ne pošilja email-ovOddelek: Izdelava spletišč | 951 (770) | BlueBerry |
» | [Android]Cudno obnasanje aplikacije in emulatorjaOddelek: Programiranje | 1316 (1145) | KernelPanic |
» | Skripta easyfeeder in vključevanje novicOddelek: Izdelava spletišč | 973 (933) | Bela01 |