Autor | Zpráva | ||
---|---|---|---|
zylvar Profil |
#1 · Zasláno: 27. 11. 2012, 10:43:06
Zdravím,
potýkám se již delší dobu s problémem že upravuji již napsaný web. kde je include definovano timto zpusobem. <?php $dr=$_SERVER['DOCUMENT_ROOT']; include($dr.'/cz/_includes/_html_head.php'); ?> chyba kterou mi vyhazuje zkušební server je Warning: include(): open_basedir restriction in effect. File(/data/www/www_btb_cz/btb_cz../_includes/_html_head.php) is not within the allowed path(s): (/data/www/www_btb_cz/btb_cz) in /data/www/www_btb_cz/btb_cz/ebro/cz/ebro-today/index.php on line 15 Warning: include(/data/www/www_btb_cz/btb_cz../_includes/_html_head.php): failed to open stream: Operation not permitted in /data/www/www_btb_cz/btb_cz/ebro/cz/ebro-today/index.php on line 15 Warning: include(): Failed opening '/data/www/www_btb_cz/btb_cz../_includes/_html_head.php' for inclusion (include_path='.:/usr/local/share/pear') in /data/www/www_btb_cz/btb_cz/ebro/cz/ebro-today/index.php on line 15 budu vděčný za vaše rady jak tato funkce funguje |
||
Tori Profil |
#2 · Zasláno: 27. 11. 2012, 12:09:56
Podle tohoto:
File(/data/www/www_btb_cz/btb_cz../_includes/_html_head.php) to spíš vypadá na pokus includovat něco jako include($dr.'../_includes/_html_head.php'); (s chybějícím lomítkem před dvěma tečkami).
|
||
user243 Profil |
#3 · Zasláno: 27. 11. 2012, 13:38:30
root jde zjistit jednoduše
echo $_SERVER['DOCUMENT_ROOT']; include __DIR__ . '/cz/_includes/_html_head.php'; |
||
zylvar Profil |
#4 · Zasláno: 27. 11. 2012, 23:31:42
user243:
no nejsem si uplně jistej kam to zapsat abych zjistil nebo nastavil ten root jsem v php docela začátečník a nedokážu si vysvětlit jak ta funkce funguje. ještě se podívám na ten tvůj zápis. nicméně pokud bude fungovat a pude aplykovat čeká mě přepsat to v nějakých 300 souborech. celý ten systém stránky je navržen hodně do hloubky s absolutními cestami a protože to testuji na jiném webu nemůžu je použít. jem v tomhle docela v koncích. |
||
Tori Profil |
#5 · Zasláno: 27. 11. 2012, 23:48:52
zylvar:
Spouštíte skripty pro jednotlivé stránky samostatně, anebo jde všechny přes jeden hlavní skript (který includuje co potřeba)? Koukněte např. na vlákno PHP include, absolutní/relativní odkaz nebo kořenová adresa?, tam se naposled řešilo něco podobného, akorát že všechny stránky ten uživatel spouštěl přes index.php, takže nastavení správné cesty díky tomu stačilo provést jen na jednom místě. |
||
zylvar Profil |
#6 · Zasláno: 29. 11. 2012, 08:54:05
Tori:
V mém případě je to trochu odlišené pokusím se popsat situaci přehledně. začínám na souboru index.html který je v kořenovém adresáři. cesta ke složcekde mám umístěné soubory vypadá takle /cz/složka/index.php //do tohoto souboru načímám includes /cz/složka_includes/includes.php // z teto složky se mi načítají ncludes adresářová struktura stránky by se dala popsat asi takto /cz/složka1/index.php /cz/podlsožka1/soubor.php /cz/podlsožka1/podložka2/soubor.php vpodsložce jsou vždy umístěné jednotlivé stránky které se načítají problém je tedy v tom jak říci skryptu $dr=$_SERVER['DOCUMENT_ROOT']; include($dr.'/cz/_includes/_html_head.php'); podle toho jak hluboko jsem zanořen v adresářové struktuře. skripty se vlastně načítají ze souborů ve složce includes které se includují do souborů umístěné hlouběji v adresářové struktuře. |
||
user243 Profil |
#7 · Zasláno: 29. 11. 2012, 09:39:21
Tak ještě jednou... zjistěte si root webu, nemusí odpovídat umístění scriptu; takže pokud odpovídá umístění scriptu tak musíte přidat před cestu
.. , popřípadě jak napsala Tori;
místo zjišťování kořene webu, jde jednoduše použít __DIR__ , cesta bude absolutně adresovaná a nemusím se starat, kde ten hosting vlastně kořen má;
Vaš problém není problém, soubor index.php si všechny ostatní soubory načítá vzhledem k svému umístění, pokud je v samotných souborech načítání jiných částí, tak je cesta opět vzhledem k index.php a tak dál (neplatí pro soubory mimo web). |
||
Tori Profil |
#8 · Zasláno: 29. 11. 2012, 10:51:22
Tenhle soubor:
/cz/podlsožka1/podložka2/soubor.php se teda spouští samostatně, anebo se includuje do /cz/složka/index.php ? Trochu jsem se v tom popisu ztratila. Pokud se includuje, tak bych prostě v index.php nadefinovala pár konstant (absol. cesta k index.php, absol. cesta ke složce s includovanými skripty,...) a ty pak dál používala místo DocumentRoot.
|
||
Časová prodleva: 11 dní
|
|||
zylvar Profil |
#9 · Zasláno: 10. 12. 2012, 16:16:39
Jelikož jsem se nedostal na nastavení php na serveru vyřešil jsem to regulárním výrazem a proměnou která určuje kořen webu. Díky známému který mi to poradil za což mu moc děkuji.
zápis: $server_root = __DIR__; if($subsubpage != "") $server_root = eregi_replace("([^/]+)(/)([^/]+)$", "", $server_root); elseif($page != "") $server_root = eregi_replace("([^/]+)$", "", $server_root); |
||
Časová prodleva: 11 let
|
0