Tak się zastanawiam czym są owe pliki wykonywalne, chciałbym uniemożliwić ich wyświetlanie poprzez odczytywanie zawartości katalogu:
foreach (new DirectoryIterator($sciezka) as $pliki) {
if(!$pliki -> isDot() and !$pliki -> isDir() and !$pliki -> isExecutable()) {
}
}
Jednak obojętnie jakich plików bym nie wrzucił do katalogu, to zostaną one wyświetlone (sh/py/php).
thek
25.09.2009, 11:42:50
Pomyśl. Czym się różni: mogę przeczytać, mogę zapisać i mogę uruchomić? Po to prawa dostępu powstały. Pliki wykonywalne to te, które można uruchomić by zrobiły coś dla Ciebie jako ich właściciela. Stąd ten atrybut będą miały skrypty. Jeśli go im usuniesz to się nie wykonają, a więc będziesz miał kichę. Pomyśl o nich jak o plikach exe. Po ich kliknięciu/uruchomieniu coś robią. Nie zawsze widzisz tego efekt, ale coś się zmienia. Możesz dostać informację co się stało jeśli exe Ci to wyświetli, ale nie ma on takiego obowiązku. Jeśli byś wykonywalność usunął, to tak jakby plik zamienił się w, choćby, tekstowy. Możesz w nim pisać lub go obejrzeć, ale nic więcej nie potrafi. Tak "na chłopski rozum" można to wytłumaczyć. Jest to może nie idealne przedstawienie, ale w miarę wiernie oddaje sens.
Czyli głównie chodzi o chmod, szczerze mówiąc to cały czas miałem wrażenie iż ta funkcja jest czymś w rodzaju "blokowania" rozszerzeń plików
thek
25.09.2009, 12:36:24
Te funkcje to zawoalowane sprawdzanie ustawień chmod jak sam zauważyłeś. Nic więcej