[php]Wyliczanie plików z katalogu

0

Korzystam ze wskazówek z faq:
http://4programmers.net/PHP/FAQ/Lista_plik%C3%B3w_z_katalogu

Niestety, przy każdym sposobie otrzymuję błędy
error 22,
failed to open dir ( f-cja dir() ),
Uncought Exception(iterator),
opendir() - failded to open dir

Ścieżki podane są jako względne(100%prawidłowe). Generalnie wylicza pliki(patrzać np.: w edytorach wyswig), lecz czasem wyświetlanie wyników jest upośledzone, czasem pojawia się output taki jaki otrzymuje sprawdzając
php nazwa.php
Nie mam bladego pojęcia jak to poprawić. Kod jest działający, lecz wywala się przy opendirach, dirach i interatorach.

na localu używam
Apache2.2.4(Win32),
PHP5.2.0

0

daj kod

0

link to dla checy wkleiłem?

0

100% to czasem za mało, sprawdź is_dir() czy na 112,5% ścieżki są prawidłowe, poza tym może nie mieć praw do wyświetlenia zawartości folderu (twoj_chmod & 1 == 0)

0

Ścieżki są poprawne- wbudowana przeglądarka(np.: phpDesigner) wyświetla częściowy wynik-np.: tylko listę plików, a includy które są linię niżej nie są obłsugiwane. Na necie to wygląda bardzo równie- czasem pojawiają się błedy, czasem plik jest praswoany niepoprawnie- pojawi wywoła się <'hr'> z prawej strony kolumny, czasem pojawi się tylko echo również jakby miało ustawione align= left&&bottom(w skrócie ;) ).
Na localu nie powinno być problemów z dostępem(wszak to Windows:>), na serwerach pliki są wczytywane.

$dir = '../produkty/';
$dh  = opendir($dir);
while (false !== ($plik = readdir($dh))){
	if (($plik!='.')&&($plik!='..')){
			echo $plik . "\n";
			include ('produkt.php?file=' . $dir . $plik);
	}
}
echo 'ok' . "\n";

Genralnie używałem różnych metod, poza glob.
Pliki są wyświetlane, natomiast include nie działa(plik w ogóle nie jest włączony(poza pojawieniem się poziomej lini-cba.pl) oraz jest na 100%działający). Na końcu pojawia się jeszcze bezczelnie 'ok'.

0

../produkty/ to ścieżka
../produkty to katalog

0

ah i nie możesz tak includować:

include('skrypt.php?parametry=abc');

widać że nie bardzo się orientujesz jak naprawdę to wszystko działa
powyższy kod możesz zamienić albo na:

include('http://serwer.pl/skrypt.php?parametry=abc&efg=hij');

ale powoduje to nie potrzebny raczej ruch w sieci, dodatkowo nie masz dostępu do zmiennych, po prostu powoduje to ściągnięcie strony i wklejenie jej przeparsowanej w to miejsce

lepsze wyjście to:

$_GET['parametry'] = 'abc';
$_GET['efg'] = 'hij';
include('skrypt.php');

albo ew. żebyś nie musiał zbytnio przepisywać (choć trochę bez sensu):

$parametry = ''parametry=abc&efg=hij';
parse_str($parametry, $_GET);
include('skrypt.php');
0

Dzięki. Masz rację, nie wiedziałem, że nie można includować plików podanych adresem względnym. Dzięki jeszcze raz za rady- działa należyce :)
Aha, i w adresie po prostu zapomniałem między $dir a $filename dać . ''. - paramter miałbyć jeden, więc powinno działaś. Nie mniej jednak działa, ale na lokalu. Ten sam kod na serwerze daje pustą stronę.

Cholera, raptus jestem...

Uruchamiając skrypt przez wbudowaną w PhpDesigner przeglądarkę otrzymuję poprawne wyniki, jednak przy przeglądaniu na localu przeglądarką skrypt do wyliczania plików nie daje już wyników. To samo się dzieje na serwerze :-/

Sprawdzam dalej i dochodzę do wniosku, że przeglądarka szaleje! Raz mi wyświetla wyniki, raz nie.
Jeszcze lepiej- plik zacytowany wyżej działa kiedy jest wywoływany samodzielnie przez przeglądarkę(tylko działa na localu), kiedy jest on includowany do innego pliku- już dostaję pusty wynik.

0
kmfk napisał(a)

Dzięki. Masz rację, nie wiedziałem, że nie można includować plików podanych adresem względnym. Dzięki jeszcze raz za rady- działa należyce :)

Jak najbardziej możesz. I jest to jak najbardziej naturalna kolej rzeczy. Ale nie istnieje plik plik.php?parametry=cośtam - istnieje tylko plik.php. Includując plik "włączasz" jego zawartość w miejsce wywołania include, a includując wykonany skrypt (http://cośtam) wklejasz tam rezultat tego skryptu. Przez to nie możesz wykorzystać większości rzeczy, które się w nim znajdują.

0

cholera... nie wiem, nie mogę sobie poradzić...
index.php działa poprawnie- każdy plik jest dobrze includowany, szkielet strony działa poprawnie, wczytywanie i budowanie strony na podstawie wymagań przebiega bez problemu.
Jest więc ładowany plik kontakt.php zawierający dane adresowe, jest plik glowna.php który na dziendobry wita- działa poprawnie. Jest jeszcze plik produkty.php. On z kolei wylicza pliki z pewnego katalogu, następnie adres pliku umieszcza w tablicy GET i uruchamia skrypt znajdujący się w tym samym folderze. Rozpoczynając od index.php każdy element działa poprawnie poza poza includowaniem produkty.php. Jeżeli jednak podam adres bezpośrednio do pliku produkty.php to otrzymuję poprawny wynik.

1 użytkowników online, w tym zalogowanych: 0, gości: 1