Autor Zpráva
Looser
Profil *
Zdravim,
mam zvláští (alespoň pro mě) problém s nahráváním obrázků na server pomocí scriptu (viz. osekaná verze níže). Když jsem tento script vytvořil a asi před rokem nahrál na svůj hosting na Savana.cz tak bez problému fungoval ale asi po půl roce z ničeho nic přestal fungovat a hlásil hned několik chyb (za celou dobu jsem zdrojovy kod nijak neupravoval). Poté jsem zkusil tento script pustit na svem PC kde mam nainstalovan Apache2triad a vše fungovalo správně proto vůbec netušim v čem by mohla být chyba. Za čas jsem zkoušel i jiný hosting Wedos.cz ale na něm to taky nefunguje proto vás chci poprosit o radu nebo jestli jste se s tím nekdo taky nesetkal.
Script jsem umistil také sem www.krbyberka.cz/exam/upload.php pokud by to pomohlo najit problem.

Chybové hlášky:
Warning: copy() [function.copy]: open_basedir restriction in effect. File() is not within the allowed path(s): (/data/web/virtuals/25326/virtual) in /data/web/virtuals/25326/virtual/www/domains/krbyberka.cz/exam/upload.php on line 22

Warning: rename(./,.//1350403202.) [function.rename]: Device or resource busy in /data/web/virtuals/25326/virtual/www/domains/krbyberka.cz/exam/upload.php on line 23

Warning: getimagesize(.//1350403202.) [function.getimagesize]: failed to open stream: No such file or directory in /data/web/virtuals/25326/virtual/www/domains/krbyberka.cz/exam/upload.php on line 25

Warning: Division by zero in /data/web/virtuals/25326/virtual/www/domains/krbyberka.cz/exam/upload.php on line 29

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /data/web/virtuals/25326/virtual/www/domains/krbyberka.cz/exam/upload.php on line 34

Warning: imagecopyresampled() expects parameter 1 to be resource, boolean given in /data/web/virtuals/25326/virtual/www/domains/krbyberka.cz/exam/upload.php on line 35


Kód:
<?php
if ($_GET["act"] === "pridat"){
  $dir = "./"; // definování výslednéhoadresáře
  if(!file_exists($dir)){ // když neexistuje složka kategorie galerie
    mkdir ($dir);
    chmod ($dir, 0777);
  }
  if (!is_writable ($dir)){chmod ($dir, 0777);} // když není složka kategorie určena pro zápis
  if (!is_writable ("./")){chmod ("./", 0777);} // když není složka admin určena pro zápis

  if($file_type == 'image/gif'){$typ_souboru = 'gif';}
  elseif(($file_type == 'image/jpeg') or ($file_type == 'image/pjpeg')){$typ_souboru = 'jpg';}

  $cislo_screenu = time();

  $obr = $dir."/".$cislo_screenu.".".$typ_souboru; // název a umístění nového obrázku
  $nahled = $dir."/".$cislo_screenu."-sml.".$typ_souboru; // název a umístění náhledu obrázku

  if (file_exists($file_name.$file_type)){print "obrázek již s daným názvem existuje!";}
  else{

    copy($file, "./".$file_name); // překopíruji obrázek z přechodného adresáře do složky admin
    rename("./".$file_name, $obr); // zkopíruji obrázek ze složky admin do cílové složky pod novým názvem

    $size = GetImageSize($obr);
    $width = $size[0]; // šířka uploadovaného obrázku
    $heigh = $size[1]; // výška uploadovaného obrázku
    $velx = $sirka_obr; // šířka náhledu obrázku
    $vely = ($heigh/$width)*$velx; // výška náhledu obrázku

    if ($typ_souboru == "jpg"){$img_in = imagecreatefromjpeg($obr);} // načtu velký obrázek
    elseif($typ_souboru == "gif"){$img_in = imagecreatefromgif($obr);} // načtu velký obrázek

    $img = ImageCreateTrueColor($velx,$vely); // vytvořím TrueColor obrázek s rozměry náhledu
    imagecopyresampled($img,$img_in,0,0,0,0,$velx,$vely,$width,$heigh); // nakopíruju originál do náhledového formátu

    if($typ_souboru == "jpg"){ImageJpeg($img,$nahled,75);}  //uložím obrázek
    elseif($typ_souboru == "gif"){Imagegif($img,$nahled);}  //uložím obrázek
  }
}
?>

<h2>Přidat nový obrázek</h2>
    <form enctype="multipart/form-data" action="upload.php?act=pridat" method="post">
                <input type="file" name="file" id="file" />
             <input type="submit" value="Vložit" />
          </form>
Rellik
Profil
No řekl bych, že je to funkcí copy() použij move_uploaded_file()
Jo a ještě sem si všiml, že složky kontroluješ jako soubory. Pro kontrolu zda existuje nějaká složka je funkce is_dir()
Looser
Profil *
tak jsem zkusil použít funci move_uploaded_file() místo copy() ale furt to na tom webhostingu nefunguje
Davex
Profil
Looser:
Kde se berou hodnoty proměnných, především $file, a co obsahují?

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: