Autor | Zpráva | ||
---|---|---|---|
hal_sk Profil |
#1 · Zasláno: 23. 1. 2011, 01:11:07 · Upravil/a: hal_sk
Zdravím,
Takto sa snažím inkludovať súbor "data.txt", ktorý sa nachádza v adresári o úroveň vyššie a nefunguje to: <?php include("../data.txt"); ?> Skúšal som to aj pomocou absolútnej cesty takto: <?php include("/data/k/a/example.com/sub/data.txt"); ?> ale to tiež nefunguje. Cesta k index súboru z ktorého volám include je: /data/k/a/example.com/sub/test/index.php Cesta k súboru ktorý chem inkludovať je: /data/k/a/example.com/sub/data.txt Je to v rámci subdomény čiže v tomto prípade internetová URL vyzerá takto: http://test.example.com/ Čo spraviť, aby to dokázalo nájsť ten súbor, aj keď je mimo aktuálneho adresára? |
||
Samo Profil * |
#2 · Zasláno: 23. 1. 2011, 10:52:29
<?php
include('./../data.txt'); ?> alebo absolútna <?php include('http://test.example.com/data.txt'); ?> |
||
AM_ Profil |
#3 · Zasláno: 23. 1. 2011, 11:33:17 · Upravil/a: AM_
Samo:
> alebo absolútna > <?php > include('ht>tp://test.example.com/data.txt'); > ?> FUJ! //dodatek: jistěže by to nefungovalo, jednak proto, že by se soubor otevřel přes HTTP, PHP v něm se zpracovalo ve vlastním vláknu a jestli sedí nebo nesedí cesta, to už je jen malý detail. Pokud v data.txt není žádný výkonný kód PHP, není vhodné používat include, ale každopádně tohle je šílený nesmysl, který občas vyplodí nějaký programátor Pokusomyl. správně je: include(dirname(__FILE__)."/../data.txt"); problém nastává, že pokud už soubor index.php je includován z jiného adresáře, je ten brán jako pracovní, proto relativní odkaz nefunguje. Jinak pro PHP soubory silně doporučuji používat vždy koncovku php a nikoli txt kvůli bezpečnosti. |
||
shaggy Profil |
#4 · Zasláno: 23. 1. 2011, 11:36:47
Samo:
> alebo absolútna > <?php > include('ht>tp://test.example.com/data.txt'); > ?> To nie je FUJ!, to by ani nefungovalo. Ak je root subdomény v /data/k/a/example.com/sub/test/, tak logicky sa na tejto adrese: 'http://test.example.com/data.txt nič nenachádza |
||
hal_sk Profil |
#5 · Zasláno: 23. 1. 2011, 16:36:25
shaggy:
> To nie je FUJ!, to by ani nefungovalo. > Ak je root subdomény v /data/k/a/example.com/sub/test/, tak logicky sa na tejto adrese: 'http://test.example.com/data.txt nič nenachádza U môjho webhostingu nachádza. Ale nedá sa z tej cesty (http://test.example.com/data.txt) includovať. |
||
shaggy Profil |
#6 · Zasláno: 23. 1. 2011, 16:42:34
hal_sk:
„U môjho webhostingu nachádza“ Tak potom to znamená, že ten súbor máš buď v /data/k/a/example.com/sub/test/data.txt a nie v /data/k/a/example.com/sub/data.txt, alebo je root subdomény v /data/k/a/example.com/sub/ a nie v /data/k/a/example.com/sub/test/. Ako to teda vlastne je? |
||
hal_sk Profil |
#7 · Zasláno: 23. 1. 2011, 16:49:13 · Upravil/a: hal_sk
Stále s tým mám problém:
Samo: <?php include('./../data.txt'); ?> Nefunguje. AM: include(dirname(__FILE__)."/../data.txt"); Nefunguje. Moja adresárová štruktúra (to čo vidím v FTP cez Total Commander - ešte je tam tretí adresár [log], ale pre nás je nepodstatný): [web]....index.php (to je index hlavnej stranky "http://www.example.com/") [sub]....[test]....index.php (to je index subdomeny test "http://test.example.com/" v ktorom chcem inkludovat subor "data.txt") :...data.txt (tento tento subor chcem includovat) Ide o to že tam budem mať vytvorených viacero subdomén (v adresári [sub] budú ďalšie adresáre, každí pre každú subdoménu) a bude jeden spoločný súbor v adresári [sub] ktorý budem inkludovať vo všetkých subdoménach. |
||
hal_sk Profil |
#8 · Zasláno: 23. 1. 2011, 17:08:27 · Upravil/a: hal_sk
Aby som to nekomplikoval. Potrebujem includovať súbor, ktorý je v rodičovskom adresári adresára z ktorého includujem (o úroveň vyššie).
Čize podľa http://php.net/manual/en/function.include.php : For example, if a filename begins with ../, the parser will look in the parent directory to find the requested file. By my to malo fungovať takto: <?php include("../data.txt"); ?> A nefunguje. Tak reku že či nebude nejak špeciálne nastavená politika pre tieto adresáre subdomén zo strany webhostingu. |
||
AM_ Profil |
#9 · Zasláno: 23. 1. 2011, 19:02:53
[#7] hal_sk
<?php include(dirname(__FILE__).'/../../data.txt'); ?> by nefungovalo? z té struktury vypadá, že je to o dvě úroveň výše. Také bys mohl dodat chybovou hlášku. |
||
hal_sk Profil |
#10 · Zasláno: 23. 1. 2011, 19:29:39
AM:
Nefunguje. Ani keď to zmením na: <?php include(dirname(__FILE__).'../data.txt'); ?> Štrukrúra je takáto: Ale všimol som si, že to funguje v adresári [web]. Poslal som dotaz na webhosting, uvidím čo povedia. Ale dnes z toho asi nič nebude. |
||
Davex Profil |
#11 · Zasláno: 23. 1. 2011, 20:00:12
Výstup funkce
dirname() nekončí lomítkem, takže je ho tam potřeba dopsat.
<?php include(dirname(__FILE__).'/../data.txt'); ?> |
||
hal_sk Profil |
#12 · Zasláno: 23. 1. 2011, 20:04:13
Prišla odpoveď z helpdesku a ak som to správne pochopil, includovať môžem súbory len z adresára [web], alebo z jednotlivých podadresárov adresára [sub].
|
||
hal_sk Profil |
#13 · Zasláno: 23. 1. 2011, 20:09:52
Davex:
Hmm, myslím že som to skúšal aj s tým lomítkom a nešlo to, ale teraz to už ide. Z webhostingu mi tam zrušili nejaké reštrikcie čo sa týkajú adresárov, možno aj to pomohlo. Problém je vyriešený, vďaka všetkým za váš čas. |
||
Davex Profil |
#14 · Zasláno: 23. 1. 2011, 20:22:39
hal_sk:
Příště si zapni zobrazování chyb PHP a napiš sem chybovou hlášku. S chybovou hláškou by to bylo jasné hned. |
||
Časová prodleva: 14 let
|
0