| 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: 17 let
|
|||
0