Autor | Zpráva | ||
---|---|---|---|
gardener Profil |
#1 · Zasláno: 9. 6. 2008, 17:40:55
Zdravím..
Mám tento skript, který je uložen v adresáři s doc soubory a načítá jejich názvy do tabulky společně s ikonou,pokud spustím skipt přímo v adresáři s .doc soubory jede vše o.k, pokud ho chci ovšem includovat do jiné stránky, která je v jiném adresáři nikdy se nic neprovede(ani nemůže,jelikož skript se poté snaží načíst .doc soubory odjinud). Zkoušel jsem to pomocí opendir a poté až spustit foreach, ale to bohužel nešlo.. Co dělám špatně? Kód přikládám: <?php $ikona = "../../../../images/ikony/def_text copy.png"; $vystup = "<table width ='300' align='center' border=\"1\">\n"; $counter = 1; foreach (glob("*.doc") as $filename) { if ($counter == 4) { $vystup .= "<tr>\n"; } $vystup .= "<td><img src=\"{$ikona}\" width=\"128\" height=\"128\" />\n"; $vystup .= "<br />\n<a href=\"{$filename}\">$filename</a></td>\n"; if ($counter == 3) { $vystup .= "</tr>\n"; } if ($counter == 3) { $counter = 1; } else { $counter++; } } $vystup .= "</table>\n"; echo $vystup; ?> |
||
Matty Profil |
#2 · Zasláno: 9. 6. 2008, 17:44:50
gardener
Řekl bych, že špatná cesta k souboru. Zadej místo relativní cesty absolutní. |
||
CoderMan99 Profil |
#3 · Zasláno: 9. 6. 2008, 18:01:56
no ak dáš tento súbor pomocou include na inú stránku sa nečuduj, že nepôjde, pretože tento príkaz si napísal len pre tento priečinok, musíš mať chybu v nastavení hľadania v priečinku, inak ja nevidím chybu v tomto kóde
|
||
gardener Profil |
#4 · Zasláno: 9. 6. 2008, 18:06:21
Já vím,to je mi jasné, jelikož to includuji do souboru, který se nacháza v rootu, takže to hledá ty .doc tam (a tam nejsou) jak to ale vyřešit..
Absolutní cesta: <?php include('C:\xampp\htdocs\otevrena_naruc\web\koncept\admin\vypis.php'); ?> Nepomohla..tedy pokud nemusí být obráceně lomítka.. |
||
kletely Profil |
#5 · Zasláno: 9. 6. 2008, 18:07:20 · Upravil/a: kletely
gardener
Skús ich vymeniť za /. |
||
gardener Profil |
#6 · Zasláno: 9. 6. 2008, 18:17:47
Tak nic atˇ už s / či \ lomítkem to nejede..napíše to akorát ,že namám povolen přístup atd..
Warning: include(C:\xampp\htdocs\otevrena_naruc\web\naruc\admin\upload\files\te xty) [function.include]: failed to open stream: Permission denied in C:\xampp\htdocs\otevrena_naruc\web\naruc\include\content\texty.php on line 18 Warning: include() [function.include]: Failed opening 'C:\xampp\htdocs\otevrena_naruc\web\naruc\admin\upload\files\texty' for inclusion (include_path='.;C:\xampp\php\pear\') in C:\xampp\htdocs\otevrena_naruc\web\naruc\include\content\texty.php on line 18 Ještě mne napadá to vykoušet s cestou localhostu.. |
||
gardener Profil |
#7 · Zasláno: 9. 6. 2008, 18:20:22
Ha:) s localhostem je to o krok dále:)
Warning: include() [function.include]: URL file-access is disabled in the server configuration in C:\xampp\htdocs\otevrena_naruc\web\naruc\include\content\texty.php on line 18 Warning: include(http://localhost/otevrena_naruc/web/naruc/admin/upload/files/t exty/vypis.php) [function.include]: failed to open stream: no suitable wrapper could be found in C:\xampp\htdocs\otevrena_naruc\web\naruc\include\content\texty.php on line 18 Warning: include() [function.include]: Failed opening 'http://localhost/otevrena_naruc/web/naruc/admin/upload/files/texty/vy pis.php' for inclusion (include_path='.;C:\xampp\php\pear\') in C:\xampp\htdocs\otevrena_naruc\web\naruc\include\content\texty.php on line 18 Nevíte,kde se to přesně nastavuje a zda je to vůbec na většině hostingů povoleno? |
||
Majkl578 Profil |
#8 · Zasláno: 11. 6. 2008, 08:05:43
pouzivej relativni cesty (./)
|
||
gardener Profil |
#9 · Zasláno: 11. 6. 2008, 08:44:48
To jsme zkoušel ale bohužel nefunguje :
<?php require('./admin/upload/files/texty/vypis.php'); ?> |
||
YoSarin Profil |
#10 · Zasláno: 11. 6. 2008, 11:50:28 · Upravil/a: YoSarin
gardener
Mrkni sem: http://cz2.php.net/manual/en/language.constants.predefined.php Konkrétně konstanta __FILE__. Dále viz http://cz2.php.net/dirname z toho nám leze: $fileDir = dirname(__FILE__); // absolutní cesta ke skriptu (k fyz. souboru, ne k tomu co se vykonává) A na to nalepíš relativní cestu k těm dokumentům... :) |
||
gardener Profil |
#11 · Zasláno: 11. 6. 2008, 14:23:20
Díky to vypadá nadějně:)
Jen si potřebuji ujasnit pár pojmů...k tomu "A na to nalepíš relativní cestu k těm dokumentům... ",to jsi myslel přesně jak prosím? Trošku mám už zmatek v tom co kam includovat:) To co jsi psal výše tedy vložím do skriptu,jenž mi zajištuje vypsání tabulky? Tzn. takto: <?php $ikona = "../../../../images/ikony/def_text copy.png"; $vystup = "<table width ='300' align='center' border=\"1\">\n"; $fileDir = dirname(__FILE__); $counter = 1; foreach (glob("*.doc") as $filename) { if ($counter == 4) { $vystup .= "<tr>\n"; } $vystup .= "<td><img src=\"{$ikona}\" width=\"128\" height=\"128\" />\n"; $vystup .= "<br />\n<a href=\"{$filename}\">$filename</a></td>\n"; if ($counter == 3) { $vystup .= "</tr>\n"; } if ($counter == 3) { $counter = 1; } else { $counter++; } } $vystup .= "</table>\n"; echo $vystup; ?> A ten pak nechám includovat do stránky na jine adresářové úrovni např texty.php? Nebo je to jinak, jako že asi ano:) |
||
gardener Profil |
#12 · Zasláno: 11. 6. 2008, 19:21:26
Nikdo netuší???
|
||
gardener Profil |
#13 · Zasláno: 12. 6. 2008, 08:11:41
Zkusím ten problém popsat ještě jednou:
Mám tyto složky (bráno od rootu webu): 1) ./admin/upload/files/texty/vypis.php -- Ve které se nachází .doc dokumenty a hlavně skript pro jejich vypsání do tabulky 2) ./layout.php -- Stránka do které se includují sekce v závislosti na proměnné 3) ./include/content/texty.php --Stránka kterou includuji do stránky "layout php" a ve které bych chtěl includovat to co je uvedeno na prvním místě čili "./admin/upload/files/texty/vypis.php" Jenže ten výpis.php má tedy pak po includování tendenci načítat soubory z rootu webu a to je právě nežádoucí, potřebuji načítat ze složky ./admin/upload/files/texty/ Snad jsme to popsal trochu srozumitelně.. Vypadá to skoro jako neřešitelný problém:) Říkám si,jestli by nebylo přístě lepší na to využít Mysql? |
||
YoSarin Profil |
#14 · Zasláno: 12. 6. 2008, 08:12:52
to dirname(__FILE__); ti vrátí adresář ve kterém je uložený tenhle skript. Přidej to před všechny relativní adresy v tomhle souboru. (tzn.: "../../../neco/nekde/soubor.pripona" -> dirname(__FILE__) . "../../../neco/nekde/soubor.pripona") Tak jak to máš teď ti to nebude zobrazovat tu png ikonku.
A abych se přiznal - jak funguje fce glob() naprosto netuším... :-< |
||
gardener Profil |
#15 · Zasláno: 12. 6. 2008, 08:26:01
Takže v podstatě zadám odkud kam?
Nebo mi to prostě jakoby "virtuálně" přenese adresář na pozici z které mohu již načítat? Tzn: ("../../../neco/nekde/vypis.php" -> dirname(__FILE__) . "../../../neco/nekde/texty.php") Nebo nee? |
||
YoSarin Profil |
#16 · Zasláno: 12. 6. 2008, 12:38:15
znovu říkám - nevím odkud fce glob() načítá adresáře. Jestli to chápu dobře, tak projde celej dostupnej filesystem a zobrazí soubory odpovídající zadání ( - je otázka nakolik je tohle žádoucí, třeba tam jednou budeš chtít mít *.doc kterej by neměl bejt takhle přístupnej...). Pokud to projde celej souborovej systém, tak by problém být neměl (ani bez dirname(__FILE__);), pokud projde jen dceřinné adresáře z místa kde spouštíš skript, mohlo by to být horší...
Zkus použít: $dir = opendir(dirname(__FILE__) . "/relativni/cesta/k/docum/"); // v tvém případě ta cesta imho bude jen /./, nebo to tam nemusíš psát vůbec... ;) while (false !== ($name = readdir($dir))) { // tady si vypiš ty soubory (a odfiltruj co není *.doc) } Takhle by to snad fungovat mělo... |
||
gardener Profil |
#17 · Zasláno: 12. 6. 2008, 18:58:20
Bohužel..Zase nic..
¨jako relaticní cestu jsem zadal /./ celý kód vypadá pro kontrolu takto:(navíc jsme zjistil,že jsem měl před tím chybu v počítání sloupců tabulky.. <?php $ikona = "../../../../images/ikony/def_text copy.png"; $vystup = "<table width ='300' align='center' border=\"1\">\n"; $filedir = opendir(dirname(__FILE__) . "/./"); while (false !== ($name = readdir($filedir))) $counter = 1; foreach (glob("*.doc") as $filename) { if ($counter == 4) { $vystup .= "<tr>\n"; } $vystup .= "<td><img src=\"{$ikona}\" width=\"128\" height=\"128\" />\n"; $vystup .= "<br />\n<a href=\"{$filename}\">$filename</a></td>\n"; if ($counter == 3) { $vystup .= "</tr>\n"; } if ($counter == 3) { $counter = 1; } else { $counter++; } } $vystup .= "</table>\n"; echo $vystup; ?> |
||
gardener Profil |
#18 · Zasláno: 12. 6. 2008, 19:03:19
kyž změním relativní cestu na "./admin/upload/files/texty/",tak to pro změnu vypíše že zadaný argument neodpovídá validnímu adresáři..
|
||
Časová prodleva: 3 dny
|
|||
YoSarin Profil |
#19 · Zasláno: 15. 6. 2008, 16:29:29
Ach jo... :)
Co myslíš že dělá while (false !== ($name = readdir($filedir))) $counter = 1; Ano, správně - podle toho, kolik je v adresáři souborů tolikrát ti to nastaví $counter na 1... :) Vyhoď ten foreach (glob("*.doc") as $filename) a místo něj tam dej ten while cyklus... Nastavuješ cestu nějakýmu $dir pomocí opendir a pak místo toho používáš glob, který bere ty soubory bůh ví kde... |
||
Časová prodleva: 16 let
|
0