Autor Zpráva
bazz
Profil
ahoj, mám tokovou hlášku
Warning: unlink(./uploads/): Is a directory in /home/www/gastroservis/html_doc/mec/uloz/delete.php on line 17

a takový skript

<?php
$slozka = dir("./uploads");
chmod("uploads", 0777);
while($soubor=$slozka->read())
if (!isset($_GET['soubor'])){$_GET['soubor']='';}
 {
  if ($soubor=="." || $soubor=="..") continue;
  echo "
  <span><a href=\"?soubor=$soubor\">$soubor</a></span><br>\n";
 
}
$slozka->close();
?>
 
<?php
$soubor = $_GET["soubor"]; 
unlink ("./uploads/$soubor");
?>

nevíte proč nelze nastavit 0777 na tu složku, předpokládám že ta chyba je o tom
han5vk
Profil
Podľa chybovej hlášky by som skôr tipoval, že premenná $soubor je prázdny string, kedže chybu ti hádže funkcia unlink ktorá dostane parameter iba "./uploads/", bez mena súboru za tým.
bazz
Profil
no tak u toho unlik by měla být přece prázdná než ji nastavím výběrem nějakého souboru ne?
Radek9
Profil
bazz:
Jenže ty ten unlink voláš i když je prázdná. Proto to hází chybu.

if (isset($soubor) && file_exists("./uploads/" . $soubor)) {
  unlink("./uploads/" . $soubor);
}
bazz
Profil
To je úplně ta samá chyba...


<?php
if (!isset($_GET['soubor'])){$_GET['soubor']='';}
$soubor = $_GET["soubor"];

if (empty($soubor)) {
  echo "vyberte soubor k odstranění:<br>";
}
else {

if (isset($soubor) && file_exists("./uploads/" . $soubor)) {
  unlink("./uploads/" . $soubor);
}

}

?>

takhle mi to fachčí... asi to není úplně elegantní ale neháže mi to chybu.. Díky opravdu to nebylo v nastavení práv.
Tomáš2
Profil *
jen malinká poznámka, prosím, nepoužívejte chmod 0777, ale alespoň chmod 0666. Nic s tím nerozbijete, sedmičky nikdy nepotřebujete, je to systémová věc.

Ty sedmičky jsou velký bezpečnostní průser, dávají právo, aby takový soubor mohl být na linuxu považovaný za aplikaci a spuštěný, poté stačí, aby vám někdo nahrál spustitelný soubor a jinou zranitelností ho nechal spustit. Řada chyb na WP je právě kvůli tomuhle. Na linuxu se narozdíl od windowsu dá spustit jakýkoliv soubor a právě tímhle systému řikáme, že daný soubor lze spustit jako aplikaci, na windows musí mít určitou koncovku (exe např.)
nethor
Profil
.. jinak použil bych raději $soubor = basename($_GET["soubor"]);

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:

0