Érdekes fájlkezelési manőver.
Sziasztok!
Nemrég történt velem egy érdekes dolog. Egy fájl méretét akartam lekérdezni, mire a PHP egy 'Warning' keretében azt mondta, hogy sikertelen volt a 'stat' futása... Ebből arra következtettem, hogy a 'filesize' függvény a 'stat' függvényt használja. Hát megnéztem a 'stat' fügvénnyel is, de az is hibát dobott.
Röviden tehát a 'dirname' függvény kivételével a PHP szerint a fájl nem létezik. Mondjuk nem próbáltam meg minden függvénnyel, de ezekkel igen: 'filesize', 'file_get_contents', 'file', 'fopen', 'file_exists', 'is_readable' (ez csak egyszerűen 'false' értékkel tért vissza) ...
Az érdekes a történetben az, hogy a fájl elérhető a PHP számára, és ha az 'opendir' és a 'readdir' függvényeket használom, akkor látja. Gondoltam biztos, csak nem olvasható => megnyitottam a php.ini-t és az 'allow_url_fopen' és az 'allow_url_include' értékeket 'On'-ra állítottam, újraindítottam a PHP-t, de semmi.
Windows XP Home Editon, FireFox 2.0.0.16 (Mondjuk ez nem számít :)), Apache és MySQL (Uniform) szerver alatt történt mindez.
A kód így néz ki:Nem tudom, hogy mi lehet a baj.
Remélem tudtok segíteni. Ez esetben előre is köszönöm!
■ Nemrég történt velem egy érdekes dolog. Egy fájl méretét akartam lekérdezni, mire a PHP egy 'Warning' keretében azt mondta, hogy sikertelen volt a 'stat' futása... Ebből arra következtettem, hogy a 'filesize' függvény a 'stat' függvényt használja. Hát megnéztem a 'stat' fügvénnyel is, de az is hibát dobott.
Röviden tehát a 'dirname' függvény kivételével a PHP szerint a fájl nem létezik. Mondjuk nem próbáltam meg minden függvénnyel, de ezekkel igen: 'filesize', 'file_get_contents', 'file', 'fopen', 'file_exists', 'is_readable' (ez csak egyszerűen 'false' értékkel tért vissza) ...
Az érdekes a történetben az, hogy a fájl elérhető a PHP számára, és ha az 'opendir' és a 'readdir' függvényeket használom, akkor látja. Gondoltam biztos, csak nem olvasható => megnyitottam a php.ini-t és az 'allow_url_fopen' és az 'allow_url_include' értékeket 'On'-ra állítottam, újraindítottam a PHP-t, de semmi.
Windows XP Home Editon, FireFox 2.0.0.16 (Mondjuk ez nem számít :)), Apache és MySQL (Uniform) szerver alatt történt mindez.
A kód így néz ki:
<?php
// Szöveg formátumú adat küldésének beállítása
header("Content-type: text/plain");
// A visszaküldendo változó lérehozása
$vissza = "{ ";
foreach($_REQUEST as $kulcs => $ertek)
{
// A fájl méretének kiolvasása
$filemeret = filesize(dirname($kulcs) . "\\" . $kulcs);
// A fáljnév beállítása
$kulcs = str_replace(".", "{p}", $kulcs);
$kulcs = str_replace(":", "{k}", $kulcs);
$kulcs = str_replace("\\", "{b}", $kulcs);
$kulcs = str_replace("/", "{s}", $kulcs);
// Ismeretlen méret esetén 100 KB beállítása
if ($filemeret === false)
{
$filemeret = 102400;
}
// Az eredmény hozzáfuzése az eddigiekhez
$vissza .= $kulcs . ": \"" . print_r($filemeret) . "\", ";
}
// Az üzenet szintaxisának beállítása
$vissza = substr($vissza, 0, (strlen($vissza) - 2)) . " }";
print($vissza);
?>
Remélem tudtok segíteni. Ez esetben előre is köszönöm!
ntfs?
a fájl olvasható a php számára? biztonság fül->szolgáltatások jogait nézd meg.
Nincs hozzáférés
Ezt már néztem és...
Megvan a gond.
A gond az volt, hogy egy 'JS' kód segítségével fűztem hozzá egy 'AJAX' kérés 'URL' címéhez a fájlok neveit "&"-el elválasztva, de a böngésző a pontokat kicserélte egy "_" jelre, tehát az "xy.jpg"-ből "xy_jpg" lett. Ez megmagyarázza, hogy miért adott 'false' értéket a 'file_exists' függvény.
A megoldás az, hogy nem a fájlnevek lettek a kulcsok, hanem azokat átírtam számokra és az értékük lett a fájlnév. Ezzel a módszerrel nem cseréli ki a pontokat.
Minden esetre köszönöm a segítségeteket!