Změna výchozí složky aplikace

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

Ahoj,

mám na hostingu nastavenou jako výchozí složku aplikace nazevdomeny.cz. Nahrál jsem do ní celou aplikaci a napsal na podporu, jestli by mohli změnit výchozí složku na nazevdomeny.cz/document_root. Řekli mi, že to z bezpečnostních důvodů nedělají. Nevím, jak to mám řešit. U zahraničních hostingů mi to vždycky změnili.

Děkuji za radu.

JakubKohout
Člen | 92
+
0
-

No většina hostingu ma pravé kvůli tomuto smerovanou doménu do nejaký složky. Ale nic ti nebrání obsah document root nahazet do hlavní složky a v index.PHP jenom změnit umístěni bootstrapu a konstant pro adresáře.

weckho
Člen | 94
+
0
-

Díky za odpověď, potřeboval bych ještě pomoc:

Naházel jsem obsah document_root do složky /nazevdomeny.cz.
Adresáře lib a app jsou umístěny /data/lib a /data/app.
V /nazevdomeny.cz/index.php jsem změnil původní:

define('WWW_DIR', dirname(__FILE__)); // path to the web root
define('APP_DIR', WWW_DIR . '/../app'); // path to the application root
define('LIBS_DIR', WWW_DIR . '/../libs'); // path to the libraries

require APP_DIR . '/bootstrap.php'; // load bootstrap file

Na:

define('WWW_DIR', dirname(__FILE__)); // path to the web root
define('APP_DIR', WWW_DIR . '/../data/app'); // path to the application root
define('LIBS_DIR', WWW_DIR . '/../data/libs'); // path to the libraries

require APP_DIR . '/bootstrap.php'; // load bootstrap file

Web nefunguje a zobrazí se jen bílá stránka. Je potřeba udělat (změnit) ještě něco?

JakubKohout
Člen | 92
+
0
-

Nevidím celej kód (blby fórum :/) ale už na zacatku mas chybu
/../data/ přepis u obou na /data/

Editoval dRaGen (9. 10. 2009 13:16)

Radek Pašta
Člen | 8
+
0
-

Máš asi špatně cesty v konstantách adresářů pro APP_DIR a LIBS_DIR
Jak píšeš svoje umístění, tak by jsi měl nastavit cesty na:

<?php
define('APP_DIR', WWW_DIR . '/data/app'); // path to the application root
define('LIBS_DIR', WWW_DIR . '/data/libs'); // path to the libraries
?>
weckho
Člen | 94
+
0
-

Zkusil jsem a nefungujue. A ani si nemyslím, že by to tak bylo správně. Mám přece ten adresář „data“ vně té složky „nazevdomeny.cz“ která obsahuje ten index, ve kterém to měním. Tudíž by tam ty tečky měly zůstat ne? Musím se přece dostat o úroveň výš, než vstoupím do adresáře data. Nebo se mýlím?

Radek Pašta
Člen | 8
+
0
-

Asi jsme tě přesně nepochopili, napiš celou adresářovou strukturu.

Ondřej Mirtes
Člen | 1536
+
0
-

A pokud to nepíše žádnou chybu, tak je možné, že se bootstrap načte, Nette detekuje produkční prostředí a chybu nezobrazí a pokud máš adresář app/log, tak jí zaloguje. Zapni si laděnku (Debug::enable(Debug::DEVELOPMENT)) nebo jukni do toho logu.

weckho
Člen | 94
+
0
-

I po zapnutí laděnky stále prázdná bílá stránka. V logu taky nic není. Kompletní adresářová struktura vypadá nějak takto:

/data/app
/data/lib
/nazevdomeny.cz/css
/nazevdomeny.cz/images
/nazevdomeny.cz/index.php
/nazevdomeny.cz/.htaccess

Ty složky app a lib rozepisovat nebudu, jejich obsah je asi jasný (defaultní). Ten index vypadá následovně:

define('WWW_DIR', dirname(__FILE__)); // path to the web root
define('APP_DIR', WWW_DIR . '/../data/app'); // path to the application root
define('LIBS_DIR', WWW_DIR . '/../data/libs'); // path to the libraries

require APP_DIR . '/bootstrap.php'; // load bootstrap file

Nic jiného jsem neměnil (je to defaultní).

Díky moc.

Editoval weckho (9. 10. 2009 15:00)

redhead
Člen | 1313
+
0
-

no zkus ještě zčekovat zapisovatelnost do složky temp, ale to by asi log ukázal

Ani
Člen | 226
+
0
-

Mas spravny prava v temp?

hmm, az druhej :) Zaroven kdyz nebudou prava v log slozce, tak se nezapise nic ani tam.

Editoval Ani (9. 10. 2009 15:12)

Radek Pašta
Člen | 8
+
0
-

Ve všech příspěvcích píšeš, že máš složku /data/lib, ale v konstantě nastavuješ složku /../data/libs.
Nemáš pouze chybu, že máš vytvořen adresář lib a máš mít libs?

weckho
Člen | 94
+
0
-

Obě složky (log i temp) jsou zapisovatelné. To s tím lib x libs je můj překlep tady na fóru, jinak to mám správně.

Jinak temp je prázdnej. Opravdu není potřeba změnit ty cesty ještě jinde, když mám tu adresářovou strukturu trošku jinak, než má být? Stačí pouze ty cesty v index.php, který už jsem změnil?

Díky za pomoc.

JakubKohout
Člen | 92
+
0
-

podle mě webserver nemá přístup do složky data. A bylo by to i logický aby tam neměl přístup …
Jak si ověřil že jsou zapisovatelné ?

weckho
Člen | 94
+
0
-

Ověřil jsem to tak, že jsem na ně klikl v FTP klientovi pravým tlačítkem myši / chmod a koukl, že jsou všechna práva zaškrtnutá.

Jinak, data měla nastavena práva špatně, ale ani po opravě to neběží:( Pořád stejný problém. Na podpoře hostingu mi napsali:

„DocumentRoot ze systemovych duvodu nemenime. Pokud chcete chcete neco ukladat mimo DocumentRoot, muzete pro to vyuzit adresar data.“

Takže by do složky data měl mít webserver přístup, nebo ne? Já už vážně nevím..:(

Radek Pašta
Člen | 8
+
0
-

Ještě vyzkoušej dát všechny složky dovnitř adresáře /nazevdomeny.cz/. Pokud se ti to rozběhne, tak bude opravdu problém s přístupem webserveru do složky data.

Aurielle
Člen | 1281
+
0
-

Zapni v indexu logování PHP chyb, je totiž možné, že máš na serveru nastavený open_basedir tak, že se skript do adresáře data nedostane…

Ani
Člen | 226
+
0
-

Pak je tu jeste jedna, asi neprilis profesionalni moznost, si do bootstrapu dat nejaky echo a uvidis, jestli ho to vubec nacte, pripadne jich tam dat vic a uvidis, kde se to zasekne…

weckho
Člen | 94
+
0
-

Tak jsem přistoupil k neprofesionální možnosti :) Ale nějaké výsledky to má – když zkouším v bootstrapu vypsat testovací text, tak na této pozici už to nic nevypíše (před Debugem ještě ano):

<?php
// Step 1: Load Nette Framework
// this allows Nette to load classes automatically so that
// you don't have to litter your code with 'require' statements
require_once LIBS_DIR . '/Nette/loader.php';

//Autoload
$loader = new RobotLoader();
$loader->addDirectory(APP_DIR);
$loader->addDirectory(LIBS_DIR);
$loader->register();

//Config load
Environment::loadConfig();

// Step 2: Enable Nette\Debug
// for better exception and error visualisation
Debug::enable(Debug::DEVELOPMENT);

echo "TEST";

// Step 3: Get the front controller
$application = Environment::getApplication();

//Simple routing
$router = $application->getRouter();

...nějaký další kód.

Jinak adresářová struktura je nyní taková:

/nazevdomeny.cz/app
/nazevdomeny.cz/lib
/nazevdomeny.cz/css
/nazevdomeny.cz/images
/nazevdomeny.cz/index.php
/nazevdomeny.cz/.htaccess

A index.php vypadá takto:

define('WWW_DIR', dirname(__FILE__)); // path to the web root
define('APP_DIR', WWW_DIR . '/app'); // path to the application root
define('LIBS_DIR', WWW_DIR . '/libs'); // path to the libraries

require APP_DIR . '/bootstrap.php'; // load bootstrap file

Díky moc všem za pomoc.

Editoval weckho (9. 10. 2009 20:43)

Ondřej Mirtes
Člen | 1536
+
0
-

Zkus ještě přidat řádek:

$application->catchExceptions = false;
weckho
Člen | 94
+
0
-

To už jsem právě zkoušel, našel jsem to někde tady na fóru. Naprosto beze změny:(

Ondřej Mirtes
Člen | 1536
+
0
-

A zkoušels pustit na hostingu Requirements checker?

Patrik Votoček
Člen | 2221
+
0
-

Múžeš sem pls postnout odkaz na PHPInfo? Mám takové tušení že bude asi problém v ini_set nebo možná i když hodně málo pravděpodobné zakázána funkce pro nastavování úrovně zobrazování errorů.

weckho
Člen | 94
+
0
-

Ten requirements checker jsem nezkoušel, protože odkaz na jeho stažení nefunguje.
Odkaz na phpinfo: http://www.profieuro.eu/phpinfo.php

Díky moc

_Martin_
Generous Backer | 679
+
0
-

weckho napsal(a):

Ten requirements checker jsem nezkoušel, protože odkaz na jeho stažení nefunguje.
Odkaz na phpinfo: http://www.profieuro.eu/phpinfo.php

Díky moc

Spíš tam nefunguje odkaz na stažení Nette, který má správně být https://nette.org/cs/packages. Requirements checker najdeš přímo v distribuci.

Nicméně při pohledu do konfigurace je vidět, že je zakázaná funkce ini_set. Každopádně zkus ten checker.

weckho
Člen | 94
+
0
-

Tak Requirements checker je k nahlédnutí zde: http://www.profieuro.eu/…/checker.php
Nedokážu z toho sám nic odvodit, pomůže mi někdo?

Díky moc!

Patrik Votoček
Člen | 2221
+
0
-

Odovození je jednoduché na tomto serveru nefungují soubory .htaccess (mod_rewrite) a je zakázána funkce ini_set. Takže to asi nepojede.

weckho
Člen | 94
+
0
-

Tak jsem docílil toho, že mám na serveru povolený mod_rewrite, ale ini_set mi povolit z bezpečnostních důvodů nechtějí. Web stále nejede. Je to tím ini_set, nebo toto důležité pro chod webu není?

Ani
Člen | 226
+
0
-

https://forum.nette.org/…-na-hostingu nejspis ne, je to sice stary…

David Grudl
Nette Core | 8228
+
0
-

weckho napsal(a):

Tak jsem docílil toho, že mám na serveru povolený mod_rewrite, ale ini_set mi povolit z bezpečnostních důvodů nechtějí. Web stále nejede. Je to tím ini_set, nebo toto důležité pro chod webu není?

Může to být tím. Pokud nechtějí povolit ini_set, je to špatný hosting a budeš mít v budoucnu hodně problémů. Šel bych jinam.