Autor | Zpráva | ||
---|---|---|---|
denCo Profil |
#1 · Zasláno: 24. 1. 2010, 19:26:43 · Upravil/a: denCo
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 |
#2 · Zasláno: 24. 1. 2010, 20:20:08
denCo:
Skoro bych řekl, že je na hostingu zakázaný chmod. Co ty? |
||
Nox Profil |
#3 · Zasláno: 24. 1. 2010, 20:26:24
kdyby byl zakázaný, tak se napíše že byl zakázaný, ne?
"Unable to access" Mohla by být špatně cesta |
||
denCo Profil |
#4 · Zasláno: 24. 1. 2010, 20:31:51 · Upravil/a: denCo
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 |
#5 · Zasláno: 24. 1. 2010, 21:12:05
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. |
||
Časová prodleva: 3 dny
|
|||
denCo Profil |
#6 · Zasláno: 27. 1. 2010, 18:27:10 · Upravil/a: denCo
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 |
||
Časová prodleva: 10 dní
|
|||
denCo Profil |
#7 · Zasláno: 6. 2. 2010, 10:54:38
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 |
#8 · Zasláno: 6. 2. 2010, 10:59:12 · Upravil/a: Davex
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 |
#9 · Zasláno: 6. 2. 2010, 13:49:54
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 |
#10 · Zasláno: 6. 2. 2010, 13:55:43 · Upravil/a: mattyZEM
Máš dobře nastavený chmod?
|
||
denCo Profil |
#11 · Zasláno: 6. 2. 2010, 15:49:03
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 |
#12 · Zasláno: 6. 2. 2010, 17:33:29
Skript nemá zjevně právo zápisu do adresáře photogallery/ - nastav na něm práva 0777.
|
||
denCo Profil |
#13 · Zasláno: 6. 2. 2010, 20:41:47
dobre, funguje mi to, vďaka Davex
|
||
Časová prodleva: 14 let
|
0