Autor Zpráva
denCo
Profil
Dobrý deň. Mám jeden problém. Robím jeden script, pomocou ktorého uploadnem obrázok na webový server a hneť ho aj scriptom zmenším a uložím, lenže mi to vyhadzuje chybu:
Warning: chmod() [function.chmod]: Unable to access http://test.geodethavlik.sk/photogallery/Hrad.jpg in /home/havlik/test.geodethavlik.sk/acp/photogallery.php on line 41

Warning: chmod() [function.chmod]: stat failed for http://test.geodethavlik.sk/photogallery/Hrad.jpg in /home/havlik/test.geodethavlik.sk/acp/photogallery.php on line 41

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to access http://test.geodethavlik.sk/photogallery/Hrad.jpg in /home/havlik/test.geodethavlik.sk/acp/photogallery.php on line 43
PrenesenĂ˝ sĂşbor nejde skopĂrovaĹĄ! //kódovanie viem, to zmením neskôr


tuto je script...

<?php
include "over.php"; //overujem, ci je uzivatel prihlaseny
include "connect.php"; //pripojenie k databaze + definovanie premennej $domena

if ( isset ( $_GET['action'] ) && $_GET['action'] == "delete" &&  isset ( $_GET['id'] ) && $_GET['id'] > 0 &&  isset ( $_GET['sub'] ) ) {
$id = $_GET['id'];
$sub = $_GET['sub'];
$con = mysql_query ( "SELECT link FROM gallery WHERE id='$id'" ) or die ( "sakra" );
while ( $res = mysql_fetch_array ( $con ) ) {
unlink ( $res['link'] );
}
mysql_query ( "DELETE FROM gallery WHERE id='$id'" ) or die ( mysql_error());
header ( "Location: $domena/acp/photogallery.php?sub={$sub}" );
}

if ( isset ( $_GET['action'] ) && isset ( $_GET['sub'] ) && $_GET['action'] == "delete" && $_GET['sub'] > 0 && empty ( $_GET['id'] ) ) {
$sub = $_GET['sub'];
$con = mysql_query ( "SELECT * FROM sub_gallery WHERE id='$sub'" ) or die ( "sakra" );
while ( $res = mysql_fetch_array ( $con ) ) {
$nazov = $res['nazov'];
}
$con2 = mysql_query ( "SELECT link FROM gallery WHERE nazov='$nazov'" ) or die ( "sakra" );
while ( $res2 = mysql_fetch_array ( $con2 ) ) {
unlink ( $res2['link'] );
}
mysql_query ( "DELETE FROM gallery WHERE sub='$sub'" ) or die ( mysql_error());
mysql_query ( "DELETE FROM sub_gallery WHERE id='$sub'" ) or die ( mysql_error());
header ( "Location: $domena/acp/photogallery.php" );
}

if ( isset ( $_POST['upni'] ) ) {
if ( !empty ( $_FILES['fupload'] ) && !empty ( $_POST['popis'] ) ) {
$popis = addslashes ( htmlspecialchars ( $_POST['popis'] ) );
if($_FILES['fupload']['type']=="image/jpeg" || $_FILES['fupload']['type']=="image/png"){ //ak sú súbory typu JPEG alebo PNG
if($_FILES['fupload']['size'] > 5*1024*1024){ //ak ma súbor väčšiu veľkosť ako 5MB
$chyba = "Soubor přesahuje maximální limit 5MB!";
} else { //ak ma súbor dobrú veľkosť
$slozka = $domena . "/photogallery"; //cesta k adresaru
$cil = $slozka . "/" .$_FILES['fupload']['name']; //ciel uloženia
chmod ($cil, 0644); //nastavenie chmod-u na potrebnú hodnotu
$nazev_souboru = $_FILES['fupload']['tmp_name']; //názov súboru
$copy = move_uploaded_file($nazev_souboru, $cil) or die ("Prenesený súbor nejde skopírovať!"); //uloženie súboru
if($copy == true){ //ak sa súbor skopíroval
$nazov = $_FILES['fupload']['name'];
$min = $slozka . "/min/" . $nazov;
zmensi ( $cil, $min ); 
$sub = addslashes ( htmlspecialchars ( $_POST['sub'] ) );
mysql_query ( "INSERT INTO gallery (nazov,link,popis,sub) VALUES ('$nazov','$cil','$popis','$sub')" ) or die ( Mysql_error() );
} else { //ak sa súbor neskopíroval
$chyba =  "Súbor nebol uložený.\nPočet chýb: " . $_FILES['fupload']['error'];
}
}
} else { //ak má súbor zlý formát
$chyba =  "Povolené sú iba formáty JPG, JPEG a PNG!";
}
} else {
$chyba =  "Musite zadat cestu aj popis suboru";
}
}


function zmensi ( $obrazok,  $uloz_min = "", $max_sirka = 200, $max_vyska = 200 ) {
list ( $sirka, $vyska, $typ, $atributy ) = getimagesize( $obrazok ); //zistenie informácii o obrázku
if ( $typ == 1 ) { //ak je obrátok typu gif
  $pripona = ".gif";
  $stary_img = imagecreatefromgif ( $obrazok );
} elseif ( $typ == 2 ) { //ak je obrázok typu jpg/jpeg
  $pripona = ".jpg";
  $stary_img = imagecreatefromjpeg ( $obrazok );
} elseif ( $typ == 3 ) { //ak je obrázok typu png
  $pripona = ".png";
  $stary_img = imagecreatefrompng ( $obrazok );
} else { //ak nieje vybraného formátu
  echo "Obrázok je nepodporovaného typu!";
}
if ( $sirka > $max_sirka || $vyska > $mas_vyska ) {
if ( $sirka > $vyska ) {
$na_vysku = $max_sirka / $sirka * $max_vyska;
$na_sirku = $sirka;
} else {
$na_sirku = $sirka / $vyska * $max_sirka;
$na_vysku = $max_vyska;
}
} else {
$na_vysku = $vyska;
$na_sirku = $sirka;
} //názov miniatury
$vysledny_img = imagecreatetruecolor ( $na_sirku, $na_vysku ); //vytvorenie miniatury
imagecopyresampled ( $vysledny_img, $stary_img, 0, 0, 0, 0,
                     $na_sirku, $na_vysku, $sirka, $vyska ); 
imagejpeg ( $vysledny_img, $obrazok ); //uloženie obrázka
imagedestroy ( $stary_img ); //odstránenie dočasného obrázka
}

if ( !isset ( $_GET['sub'] ) ) {
?>
<form method="post" action="sub.php">
  Vytvorit subkategoriu:
  <input type='text' name='meno'>
  <input type='submit' name='pridaj' value='Pridaj'>
</form>
<?php
} else {
$sub = addslashes ( htmlspecialchars ( $_GET['sub'] ) );
?>
<br>
Pridat do subkategorie:
<br><br>
<form method="post" action="photogallery.php?sub=<?php echo $sub; ?>" enctype="multipart/form-data">
  Obrazok: <input type='file' name='fupload'> <br>
  Popis: <input type='text' name='popis'> <br>
  <input type='submit' name='upni' value='Upload'>
  <input type='hidden' name='sub' value="<?php echo $sub; ?>">
</form>
<?php
if ( isset ( $chyba ) ) { echo $chyba; }
}
if ( isset ( $_GET['sub'] ) ) {
$sub = addslashes ( htmlspecialchars ( $_GET['sub'] ) );
$con = mysql_query ( "SELECT id,nazov,link,popis FROM gallery WHERE sub='$sub' ORDER BY id DESC" ) or die ( mysql_error() );
while ( $res = mysql_fetch_array ( $con ) ) {
echo "<table>";
echo "<tr><td><img src='" . $res['link'] . "'></td><td> " . $res['popis'] . "</td><td><a href='photogallery.php?sub={$sub}&action=delete&id=" . $res['id'] . "'>delete</a></td></tr>";
echo "</table>";
}
} else {
$con = mysql_query ( "SELECT id,nazov FROM sub_gallery ORDER BY id DESC" ) or die ( "sakra" );
while ( $res = mysql_fetch_array ( $con ) ) {
echo "<a href='photogallery.php?sub=" . $res['id'] . "'>" . $res['nazov'] . "</a> ";
echo "<div style='position:relative;top:-25px;left:200px;'><a href='photogallery.php?action=delete&sub=" . $res['id'] . "'>delete</a></div> <br>";
}
}
?>


na localhoste mi uploadne obrázok ale nevytvorí zmenšeninu a ani nevypíše chybu a na webhostingu mi vypíše vyššie zmienenú chybu a neuploadne mi nič... vďaka za pomoc
mckay
Profil
denCo:
Skoro bych řekl, že je na hostingu zakázaný chmod. Co ty?
Nox
Profil
kdyby byl zakázaný, tak se napíše že byl zakázaný, ne?

"Unable to access"
Mohla by být špatně cesta
denCo
Profil
Nox:
nie, cesta je dobre, aj keď som zadal úplnú cestu webhostingu, aj tak mi stále zobrazí tú istú chybu

funkcia nieje zakázaná, akurát som im napísal
mckay
Profil
denCo:
Ne, tahle http://test.geodethavlik.sk/photogallery/Hrad.jpg cesta je špatně. Hlásí to not-found.

Nox:
Aha, špatně jsem si to přečetl.
denCo
Profil
mckay:
je to opravené, ale aj tak mi to nefunguje... chmod nastavujem pre zložku photogallery a stále hlási tú istú chybu

EDIT// už som to opravil, hral som sa s tým a spravil som to, aj tak dikes
denCo
Profil
opsa, je to kravina, na localhoste mi to funguje bez problémov ale na servery mi to stále blbne, tu je kód
if ( isset ( $_POST['upni'] ) ) {
if ( !empty ( $_FILES['fupload'] ) && !empty ( $_POST['popis'] ) ) {
$popis = addslashes ( htmlspecialchars ( $_POST['popis'] ) );
if($_FILES['fupload']['type']=="image/jpeg" || $_FILES['fupload']['type']=="image/png"){ //ak sú súbory typu JPEG alebo PNG
if($_FILES['fupload']['size'] > 5*1024*1024){ //ak ma súbor väčšiu veľkosť ako 5MB
$chyba = "Soubor přesahuje maximální limit 5MB!";
} else { //ak ma súbor dobrú veľkosť
$slozka = $domena . "/photogallery/"; //cesta k adresaru
$cil = $slozka . $_FILES['fupload']['name']; //ciel uloženia
chmod ($slozka, 0644); //nastavenie chmod-u na potrebnú hodnotu
$nazev_souboru = $_FILES['fupload']['tmp_name']; //názov súboru
$copy = move_uploaded_file($nazev_souboru, $cil) or die ("Prenesený súbor nejde skopírovať!"); //uloženie súboru
if($copy == true){ //ak sa súbor skopíroval
$nazov = $_FILES['fupload']['name'];
$min = $slozka . "min/" . $nazov;
$sub = addslashes ( htmlspecialchars ( $_POST['sub'] ) );
mysql_query ( "INSERT INTO gallery (nazov,link,popis,sub) VALUES ('$nazov','$cil','$popis','$sub')" ) or die ( Mysql_error() );
} else { //ak sa súbor neskopíroval
$chyba =  "Súbor nebol uložený.\nPočet chýb: " . $_FILES['fupload']['error'];
}
}
} else { //ak má súbor zlý formát
$chyba =  "Povolené sú iba formáty JPG, JPEG a PNG!";
}
} else {
$chyba =  "Musite zadat cestu aj popis suboru";
}
}


chyba je táto
Warning: chmod() [function.chmod]: Unable to access http://test.geodethavlik.sk/photogallery/ in /home/havlik/test.geodethavlik.sk/acp/photogallery.php on line 41

Warning: chmod() [function.chmod]: stat failed for http://test.geodethavlik.sk/photogallery/ in /home/havlik/test.geodethavlik.sk/acp/photogallery.php on line 41

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to access http://test.geodethavlik.sk/photogallery/Hrad.jpg in /home/havlik/test.geodethavlik.sk/acp/photogallery.php on line 43
Prenesený súbor nejde skopírovať!


malo by to fungovať, pretože zložka existuje takže by nemal byť žiadny problém
Davex
Profil
Obsah proměnné $domena se bere kde? Pro práci se soubory nepoužívej absolutní URL a použij relativní cestu v rámci souborového systému na serveru.

Nebo absolutní cestu s využitím části cesty ke skriptu samotnému:
$slozka = dirname(dirname(__FILE__)) . "/photogallery/"; //cesta k adresaru
AM_
Profil
denCo:
move_uploaded_file($nazev_souboru, "http://test.geodethavlik.sk/photogallery/Hrad.jpg")
Tohle nemůže být správně, když jako druhý parametr dáš URL adresu, jak ji má dostat funkce move_uploaded_file na onen server? Byť je to stejný server, tak je nehorázná prasárna číst v PHP lokální soubory přes URL adresu (http://) pokud k tomu nemáš důvod, ale zapisovat přes URL, to už ani nefunguje.

Nejlepší je použít relativní cestu, jak píše Davex.
mattyZEM
Profil
Máš dobře nastavený chmod?
denCo
Profil
vďaka, pomohlo to na chmod, ale nie na move_uploaded_file()... hlási teraz túto chybu

Warning: move_uploaded_file(/home/havlik/test.geodethavlik.sk/photogallery/Hrad.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/havlik/test.geodethavlik.sk/acp/photogallery.php on line 44

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpuyq2SR' to '/home/havlik/test.geodethavlik.sk/photogallery/Hrad.jpg' in /home/havlik/test.geodethavlik.sk/acp/photogallery.php on line 44
Davex
Profil
Skript nemá zjevně právo zápisu do adresáře photogallery/ - nastav na něm práva 0777.
denCo
Profil
dobre, funguje mi to, vďaka Davex

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: