Autor Zpráva
Prefin
Profil
Ahojda.
Potřeboval bych trochu poradit s následující drobností.
Mám dva weby (na stejném hostingu), každý na jiné doméně II. řádu. Na jednom ukládám logy určitých aktivit do souborů po dni.
Z druhého webu potřebuji načítat obsah složky s logy a nějak se mi to nedaří otevřít.
Zadávám absolutní cestu a práva u složky i souborů mám 777.
Jednotlivý soubor bez problémů přečtu pomocí
file_get_contents("absolutnicesta.soubor")
ale nejdřív musím zjistit názvy souborů abych je mohl číst.
Tohle mi na načtení nefunguje a myslím že ani nemůže (na jiný web tedy):
$adresar = "absolutnicesta";
$spojeni = opendir($adresar);
while (false!==($file = readdir($spojeni))) {
    if ($file != "." && $file != "..")  echo $file;
}
closedir($spojeni);
Při čtení jednotlivého souboru se použije místo fopen fce file_get_contents().
Najde se nějaký ekvivalent i pro opendir() který by uměl otevřít vzdálený adresář?
Díky
Davex
Profil
Nevím, co je v té absolutní cestě, ale přes http:// nejde načítat obsah vzdálených adresářů. Funkce opendir() a spol., scandir() nebo třída DirectoryIterator jsou použitelné pouze lokálně v rámci souborového systému na serveru.
Prefin
Profil
V absolutní cestě je /home/domeny/trzistepoptavek.com/web/subdomeny/www/log/5-05-2012.txt.
Jenom mě napadlo že když to jde vyřešit u čtení jednotlivého souboru tak půjde zjistit i obsah odresáře.
Ale asi by to bylo možná bezpečnostní riziko.
Davex
Profil
Pro načtení adresáře by měl být v cestě jen adresář.

$adresar = "/home/domeny/trzistepoptavek.com/web/subdomeny/www/log/";
$spojeni = opendir($adresar);
Prefin
Profil
Ale no jo, jsem blb - jen jsem to napsal blbě sem.
Nejspíš asi obsah vzdálené složky prostě vypsat nejde takže jsem to musel vyřešit vypsáním obsahu adresáře do souboru a pak s tím pracovat dál.
Davex
Profil
Myslím, že pokud nejsi omezen zapnutým safe_mode nebo open_basedir, tak by to fungovat mohlo. Vypíše to alespoň nějakou chybu, když si zapneš jejich vypisování?

ini_set('display_errors', 'on');
error_reporting(E_ALL);
Prefin
Profil
Hlášku to vypsalo.
Při absolutní cestě
$adresar = "/home/domeny/kampropenize.cz/web/subdomeny/www/log/";
$spojeni = opendir($adresar);
Warning: opendir() [function.opendir]: open_basedir restriction in effect. File(/home/domeny/kampropenize.cz/web/subdomeny/www/log) is not within the allowed path(s): (/home/domeny/trzistepoptavek.com/web/subdomeny:/home/domeny/trzistepoptavek.com/web/tmp:/usr/share/php5:/tmp:/home/apps) in /home/domeny/trzistepoptavek.com/web/subdomeny/www/ad/log_kam.php on line 41

Warning: opendir(/home/domeny/kampropenize.cz/web/subdomeny/www/log/) [function.opendir]: failed to open dir: Operation not permitted in /home/domeny/trzistepoptavek.com/web/subdomeny/www/ad/log_kam.php on line 41
a při http
$adresar = "http://kampropenize.cz/log/";
$spojeni = opendir($adresar);
Warning: opendir(http://www.kampropenize.cz/log/) [function.opendir]: failed to open dir: not implemented in /home/domeny/trzistepoptavek.com/web/subdomeny/www/ad/log_kam.php on line 41
Relativní cesta je blbost (je to na jiné doméně) a přes http to taky nemůže jít.
Vyřešil jsem to tak, že mám další soubor s aktualizovaným seznamem názvů ostatních oddělených středníkem, kterej bez problémů načtu a pak si už vypíšu ostatní podle toho.
Je to trochu kostrbatý, ale funkční a naštěstí se to nebude dělat stokrát za minutu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: