Nepochopitelna chyba na novem serveru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Royce
Člen | 15
+
0
-
78×
PHP Warning: include(): open_basedir restriction in effect. File() is not within the allowed path(s): (/var/www/clients/client5/web6:.:/usr/share/php5:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin) in /var/www/clients/client5/web6/libs/Nette/Loaders/LimitedScope.php:66

1×
PHP Warning: require(): open_basedir restriction in effect. File() is not within the allowed path(s): (/var/www/clients/client5/web6:.:/usr/share/php5:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin) in /var/www/clients/client5/web6/libs/Nette/Debug/DebugHelpers.php:73

1×
PHP Warning: require(): open_basedir restriction in effect. File() is not within the allowed path(s): (/var/www/clients/client5/web6:.:/usr/share/php5:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin) in /var/www/clients/client5/web6/libs/Nette/Debug/DebugHelpers.php:76

1×
PHP Warning: require(): open_basedir restriction in effect. File() is not within the allowed path(s): (/var/www/clients/client5/web6:.:/usr/share/php5:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin) in /var/www/clients/client5/web6/libs/Nette/Debug/DebugHelpers.php:84

Web normálně jede, ale laděnka na mě řve 80 chyb… navíc mi fakt nedávají smysl, protože závorky u require() a File() jsou prázdné což nebývá.

Jinak nette version 2.0-dev 9f535f9

blacksun
Člen | 177
+
0
-

A přečetl sis ten text těch chyb? Píše se tam, že bylo aplikováno open_basedir nastavení a že něco je v rozporu s ním, něco se pokouší číst odjinud, než se smí.

Zkontroloval bych adresářovou strukturu a jestli je vše tam, kde má být.

Aurielle
Člen | 1281
+
0
-

I tak, require prázdného souboru je přinejmenším podivný.

Royce
Člen | 15
+
0
-

Právě, že přečetl… Dělá to i čistý skeleton (sandbox), takže se strukturou problém nebude… Mám podezření na robotloader, ale nevím jak vysledovat kam všude se snaží vlézt či co.

ras
Člen | 135
+
0
-

Pridavam se k teto chybe. Web mi fungoval a pak jsem zmenil strukturu od te doby uz mi nefunguje. Hlaseni Ladenky je vtipne

RuntimeException

SplFileInfo::isFile(): open_basedir restriction in effect. File(/var/www/clients/client25/web101/web_app/..) is not within the allowed path(s): (/var/www/clients/client25/web101/web:/var/www/clients/client25/web101/web_app:/var/www/clients/client25/web101/web_app/:/var/www/clients/client25/web101/tmp

Puvodni struktura byla

root
- web
- web2
---- app
---- libs
atd.

nova struktura je

root
- web
- web_app
- web_libs
atd.

index.php riak

// the identification of this site
define('SITE', 'www.example.cz');

// absolute filesystem path to the web root
define('WWW_DIR', __DIR__);

// absolute filesystem path to the web images
define('WWW_IMG', WWW_DIR."/images");

// absolute filesystem path to the application root
define('APP_DIR', WWW_DIR . '/../web_app');

// absolute filesystem path to the libraries
define('LIBS_DIR', WWW_DIR . '/../web_libs');

// absolute filesystem path to the log files
define('LOGS_DIR', WWW_DIR . '/../web_logs');

// absolute filesystem path to the temporary files
define('TEMP_DIR', WWW_DIR . '/../web_temp');

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

napada Vas nekoho, cim by to tak mohlo byt … kdyz evidentne cesta, kterou Ladenka hlasi je v nastaveni open_basedir uvedeno (viz. cela ta chybova hlaska)?

EDIT: jeste jsem zapomenul dodat, ze Ladenka ukazuje chybu na radku v bootstrap.php

Environment::loadConfig();

a pritom config.ini je ve stejnem adresari jako bootstrap.php

Editoval ras (2. 5. 2011 19:02)

Patrik Votoček
Člen | 2221
+
0
-

A kde je tam uvedena cesta /var/www/clients/client25/web101/web_app/.. tj. /var/www/clients/client25/web101 ?

ras
Člen | 135
+
0
-

Patrik: Nevim, zda jsem porozumel otazce.

XXXXXXXXXXXXXXXX

RuntimeException

SplFileInfo::isFile(): open_basedir restriction in effect. File(/var/www/clients/client25/web101/web_app/..) is not within the allowed path(s): (/var/www/clients/client25/web101/web:/var/www/clients/client25/web101/web_app

XXXXXXXXXXXXXXXX

Tucne jsem zduraznil, ze pozadovany soubor (prvni tucna polozka) je obsazena v nastaveni (druha zvyraznena polozka).

Zvlastni jsou dve veci:

  • bootstap.php je soucasti cesty /var/www/clients/client25/web101/web_app/ a pritom ladenka hlasi chybu pri nacitani config.ini, ktery je ve stejnem adresari
  • predchozi struktura byla v podstate stejna, tj. ROOT webu a na stejne urovni adresar s dalsimi soubory → a stejne nastaveni options pro open_basedir, ktere jsem ted upravoval, aby bylo v souladu s pozadavky aplikace (to predchozi nastaveni neobsahovalo vubec nic o druhem adresari, tj. byl tam uveden jen webROOT)

Fakt to zatim nechapu.

ras
Člen | 135
+
0
-

Patrik: ale inspiroval jsi me a po uprave nastaveni open_basedir, tj. webROOTu a i druheho adresare a jejich nahrazeni nadrazenym adrearem, tj. /var/www/clients/client25/web101 vse zacalo fungovat.

Presto to nechapu (chapu, ze to ted funguje). Rozdil ve strukture puvodniho a noveho usporadani neni, takze proc na to server zareagoval?

Navic se mi soucasne reseni vubec nelibi, je zbytecne volne … byt je funkcni.

ras
Člen | 135
+
0
-

Tak poznatek. Nejak to asi souvisi s CACHEi. Pote, co vse naskocilo (viz. prispevek vyse) jsem upravil nastaveni open_basedir a bylo to beze zmeny (ackoliv to „nemelo“ chodit). Tak jsem smazal cache adresar a jup, chyba zde byla zase … po uprave open_basedir, tj. doplneni vsech adresaru web_XXX se nic nezmenilo a chyba je tu stale …

Reseni jiz znam, ale duvod mi nejak porad utika …

Patrik Votoček
Člen | 2221
+
0
-

ras napsal(a):

Patrik: Nevim, zda jsem porozumel otazce.

XXXXXXXXXXXXXXXX

Tucne jsem zduraznil, ze pozadovany soubor (prvni tucna polozka) je obsazena v nastaveni (druha zvyraznena polozka).

NENÍ obsažena!!! /var/www/clients/client25/web101/web_app/.. != /var/www/clients/client25/web101/web_app ale rovná se /var/www/clients/client25/web101 (POZOR NA TY DVĚ TEČKY NA KONCI)

ras
Člen | 135
+
0
-

Patrik: Chapu, ted mi to docvaklo … diky

nanuqcz
Člen | 822
+
0
-

Mám stejný problém, prosím o radu:

/*soubor index.php */
$loader = new Nette\Loaders\RobotLoader;
$loader->addDirectory( __DIR__ );  //__DIR__ = /mnt/data/accounts/w/xxxxx/data/www/www
$loader->setCacheStorage( new Nette\Caching\FileStorage(  __DIR__ . '/temp' ) );
$loader->register();

Zobrazí se chyba:

RuntimeException

SplFileInfo::isFile(): open_basedir restriction in effect. File(/mnt/data/accounts/w/xxxxx/data/www/www/..) is not within the allowed path(s): (/mnt/data/accounts/w/xxxxx/data/www/www:/tmp/uploads)

Proč se RobotLoader snaží dostat „nad“ úroveň, kterou jsem mu nastavil v addDirectory()? (viz chybova zpráva a ty dvě tečky na konci cesty).

(Nette 2.0 alfa2 PHP5.3)

Editoval xxxObiWan (11. 6. 2011 16:04)

David Grudl
Nette Core | 8228
+
0
-

Nad úroveň by jít neměl a hádám, že by to mohla být chyba v nekonzistentním chování RecursiveDirectoryIterator. Jakou máš přesně verzi PHP a operační systém?

Taky by se mi hodilo nějaké číslo řádku a soubor, kde chyba vzniká, $loader->register nebo Environment::loadConfig() jsou příliš obecné. Ale tipnu si: pokud je to v metodě Finder::select(), možná by pomohlo prohodit tyto řádky:

			$this->filter(function($file) use ($type, $pattern) {
				return (!$type || $file->$type())
					&& !$file->isDot()

na

			$this->filter(function($file) use ($type, $pattern) {
				return !$file->isDot()
					&& (!$type || $file->$type())

Zkuste, jestli to pomůže.

nanuqcz
Člen | 822
+
0
-

Nepomohlo. Laděnka říká cosi o SplFileInfo->isFile() (viz přiložený soubor).

PHP: 5.3.6
Nette: 2.0 alfa2 PHP5.3  (má cenu zkoušet tam hodit nejnovější betu?)
OS: předpokládám že linux
Hosting: http://www.savana.cz

Přikládám výpis laděnky a phpinfo.

Díky

CZechBoY
Člen | 3608
+
0
-

na savaně mi to faká v cajku, viz můj zkušební projekt bike :)

struktura:

  • app
  • document_root
  • --css
  • --images
  • --js
  • --index.php
  • libs

Editoval CZechBoY (29. 6. 2011 19:50)

Melmen
Člen | 132
+
0
-

Na serveru používají (aspoň podle definic cest) ISPConfig, na serveru ho mám taky. a taky mi to blblo.
Napiš jim ať ti do open_basedir přidají „/var/www/clients/client5/web6/“ nebo „/var/www/clients/client5/“

Editoval Melmen (29. 6. 2011 20:32)

nanuqcz
Člen | 822
+
0
-

CZechBoY napsal(a):

na savaně mi to faká v cajku, viz můj zkušební projekt bike :)

Pokud použiju celé Nette, taky mi to jede. Problém nastane, když chci použít RobotLoader samostatně.

Melmen napsal(a):

Na serveru používají (aspoň podle definic cest) ISPConfig, na serveru ho mám taky. a taky mi to blblo. Napiš jim ať ti do open_basedir přidají „/var/www/clients/client5/web6/“ nebo „/var/www/clients/client5/“

To nechápu, podle výpisu chyby všechny potřebné adresáře už v open_basedir jsou. RobotLoader se snaží dostat „nad“ adresář, který jsem mu nadefinoval (viz dvě tečky na konci adresy v chybě) – a v tom vidím chybu.

nanuqcz
Člen | 822
+
0
-

David Grudl napsal(a):

možná by pomohlo prohodit tyto řádky: …

Dívám se na github, že už jsi to udělal. K vyřešení problému ale u mě bylo potřeba ještě jedné věci, poslal jsem pull request.