Pomohl mi Radek Hulán

Zní to hrozně, ale je tomu tak.

Aby mohl program v php nahrávat soubory na server, potřebuje přístup do složky. Na localhostu jsem toto řešil prostě chownutím souboru správnému uživateli a skupině. Na serveru potom otravováním admina, což je velice nepraktické. Udělal jsem si proto jednoduchý prográmek s mkdir funkcí

mkdir(nazev, 0775)

Problém

Vytvořený soubor ovšem neměl práva 775, jak by se mohlo zdát ale pouze 755. A teď to příjde - koukl jsem po netu a našel Hulánův článek o tom, že se aplikuje *nixová maska 0022 a tím pádem je potřebné použít ještě příkaz

umask(0000)

Výsledek

Dva .php soubory, jeden vytvoří složku s příslušnými právy, druhý ji případně smaže.

Důležitá poznámka je, že v příslušném adresáři, kde se složka vytváří, musí mít server právo zápisu. Tedy na tu chvilku vytváření použít

chmod a+w .

A nezapomenout po vytvoření (smazání složky) na

chmod o-w .

Vytvoření složky

<?
//Vytvoreni slozky
$file = "obr";
if(file_exists($file)) {
	echo "<h1>Soubor jiz existuje…</h1>";
}
else {
	umask(0000);
	mkdir($file, 0775);

	if(!file_exists($file)) {
	echo "<h1>Soubor NEBYL vytvořen :(</h1>";
	}
	else {
	echo "<h1>Soubor vytvořen…</h1>";
	}
}
?>

Smazání složky

<?
//Smazani slozky
$file = "obr";
if(!file_exists($file)) {
	echo "<h1>Soubor jiz neexistoval…</h1>";
}
else {
	rmdir($file);

	if(!file_exists($file)) {
	echo "<h1>Soubor smazán…</h1>";
	}
	else {
	echo "<h1>Soubor NEBYL smazán :(</h1>";
	}
}

?>

Tags: