PHP Warning: move_uploaded_file(): Unable to move '/Users/laurieskola/tmp/phpLzlzSf' to 'kuvat/ref/' in /Users/laurieskola/Sites/refkohdedit_KESKEN.php on line 161
Mistäs tuo voisi johtua? olen vielä aika aloittelija näissä hommissa mutta eiköhän se siitä..
php koodi alla
<?php include('include/1.php'); ?> </title> <script type="text/javascript">function toggleLayer(whichLayer) { var elem, vis; if( document.getElementById ) elem = document.getElementById( whichLayer ); else if( document.all ) elem = document.all[whichLayer]; else if( document.layers ) elem = document.layers[whichLayer]; vis = elem.style; if(vis.display=='' && elem.offsetWidth!=undefined && elem.offsetHeight!=undefined) vis.display = (elem.offsetWidth!=0 && elem.offsetHeight!=0) ? 'block':'none'; vis.display = (vis.display=='' || vis.display=='block') ? 'none':'block';}</script> </head> <body> <div id="hooyks"> </div> <div id="tausta"> <div id="pohja"> <div id="mainmenu"> <ul id="mainmenuul"> <li id='menu'><a href="index.php" title="Etusivu" accesskey="O"><span>Etusivu</span></a></li> <li id='menu'><a href="palvelut.php?sivu=menu" title="Palvelut" accesskey="O"><span>Palvelut</span></a></li> <li id='menu' class="selected"><a href="referenssit.php?sivu=menu" title="Referenssit" accesskey="O"><span>Referenssit</span></a></li> <li id='menu'><a href="yhteystiedot.php?sivu=yhteystiedot" title="Yhteystiedot" accesskey="O"><span>Yhteystiedot</span></a></li> <li id='menu'><a href="jobs.html" title="Avoinna olevat työpaikat" accesskey="O"><span>Työpaikat</span></a></li> </ul><div class='teksti'><?php if ($logged){ DEFINE( 'BINDIR', '/usr/bin'); // tietokanta-yhteys $db_config['server'] = 'localhost'; $db_config['password'] = 'fintek'; $db_config['database'] = 'test'; mysql_connect($db_config['server'], $db_config['password']); mysql_select_db($db_config['database']); $sqlr = mysql_query("SELECT kohde FROM refkohteet ORDER by kohde ASC"); $sqle = mysql_query("SELECT kohde FROM refkohteet ORDER by kohde ASC"); $toiminto = $_POST['toiminto']; $kohde = htmlspecialchars($_POST['kohde']); $vuosi = htmlspecialchars($_POST['vuosi']); $suunnittelu = htmlspecialchars($_POST['suunnittelu']); $urakoitsija = htmlspecialchars($_POST['urakoitsija']); $isannointi = htmlspecialchars($_POST['isannointi']); $valvonta = htmlspecialchars($_POST['valvonta']); $id2 = $_POST['id2']; $do = ""; $toimet1 = htmlspecialchars($_POST['toimet1']); $toimet2 = htmlspecialchars($_POST['toimet2']); $toimet3 = htmlspecialchars($_POST['toimet3']); $toimet4 = htmlspecialchars($_POST['toimet4']); $toimet5 = htmlspecialchars($_POST['toimet5']); $toimet6 = htmlspecialchars($_POST['toimet6']); if ($_POST['submit'] == "Suorita"){ if ($toiminto == "Poista"){$do = 1;}elseif ($toiminto == "Lisää"){$do = 2;}elseif ($toiminto == "Muokkaa"){$do = 3;} } elseif ($toiminto){ if ($toiminto == "Poista"){ $deletablename = $_POST['deletablename']; mysql_query("DELETE FROM refkohteet WHERE kohde='".$deletablename."'"); $do = "Kohde poistettu onnistuneesti!"; } elseif ($toiminto == "Lisää"){ if ($_POST['imagecb'] == "c") { function rndstr($length) {$characters = "0123456789". "ABCDEFGHIJKLMNOPQRSTUVWXYZ". "abcdefghijklmnopqrstuvwxyz"; $string = "";for ($p = 0; $p < $length; $p++) {$str .= $characters[mt_rand(0, strlen($characters))]; } return $str; } $name1 = explode(".",$_FILES['file']['name']); $name2 = explode(".",$_FILES['file1']['name']); $name3 = explode(".",$_FILES['file2']['name']); $name4 = explode(".",$_FILES['file3']['name']); $name5 = explode(".",$_FILES['file4']['name']); $name6 = explode(".",$_FILES['file5']['name']); $name7 = explode(".",$_FILES['file6']['name']); $name8 = explode(".",$_FILES['file7']['name']); $name9 = explode(".",$_FILES['file8']['name']); $name10 = explode(".",$_FILES['file9']['name']); $name11 = explode(".",$_FILES['file10']['name']); $name12 = explode(".",$_FILES['file11']['name']); // Annetaan kuville sattunnaiset nimet $nim1 = rndstr (15); $nim2 = rndstr (15); $nim3 = rndstr (15); $nim4 = rndstr (15); $nim5 = rndstr (15); $nim6 = rndstr (15); $nim7 = rndstr (15); $nim8 = rndstr (15); $nim9 = rndstr (15); $nim10 = rndstr (15); $nim11 = rndstr (15); $nim12 = rndstr (15); $nimi1 = $nim1.".".$name1[1]; $nimi2 = $nim2.".".$name2[1]; $nimi3 = $nim3.".".$name3[1]; $nimi4 = $nim4.".".$name4[1]; $nimi5 = $nim5.".".$name5[1]; $nimi6 = $nim6.".".$name6[1]; $nimi7 = $nim7.".".$name7[1]; $nimi8 = $nim8.".".$name8[1]; $nimi9 = $nim9.".".$name9[1]; $nimi10 = $nim10.".".$name10[1]; $nimi11 = $nim11.".".$name11[1]; $nimi12 = $nim12.".".$name12[1]; # Tiedoston suurin sallittu koko (kt) $max_size = 5000000; # Minne kuvat kopioidaan $hakemisto = "kuvat/ref/"; if (file_exists("kuvat/ref")); else mkdir("kuvat/ref", 0777); function uploadimg($nimi,$num) { global $hakemisto; global $max_size; global $nimi1; global $nimi2; global $nimi4; global $nimi5; global $nimi6; global $nimi7; global $nimi8; global $nimi9; global $nimi10; global $nimi11; global $nimi12; if ($num == "1"){$nimiy = $nimi1;} elseif ($num == "2"){$nimiy = $nimi2;} elseif ($num == "3"){$nimiy = $nimi3;} elseif ($num == "4"){$nimiy = $nimi4;} elseif ($num == "5"){$nimiy = $nimi5;} elseif ($num == "6"){$nimiy = $nimi6;} elseif ($num == "7"){$nimiy = $nimi7;} elseif ($num == "8"){$nimiy = $nimi8;} elseif ($num == "9"){$nimiy = $nimi9;} elseif ($num == "10"){$nimiy = $nimi10;} elseif ($num == "11"){$nimiy = $nimi11;} elseif ($num == "12"){$nimiy = $nimi12;} $file_size = $_FILES[$nimi]['size']; $file_tmp_name = $_FILES[$nimi]['tmp_name']; $file_type = $_FILES[$nimi]['type']; # Tarkistetaan onko annettu tiedosto liian suuri if ((int)$file_size > (int)$max_size) { die("Tiedoston koko on liian suuri! Suurin sallittu koko on " . $max_size . " tavua."); } # Tarkistetaan onko annettu tiedosto oikean tyyppinen $type = explode("/", $file_type); $type = $type[0]; if ($type != "image") { die("Tiedosto ei ole kuva"); } # Siirretään tiedosto hakemistoon move_uploaded_file ($file_tmp_name, $hakemisto . $file_name); } //Lähetetään kuvat palvelimelle if ($_POST["imagecb"] == "c") { uploadimg('file','1'); } if ($_POST["imagecb1"] == "c") { uploadimg('file1','2'); } if ($_POST["imagecb2"] == "c") { uploadimg('file2','3'); } if ($_POST["imagecb3"] == "c") { uploadimg('file3','4'); } if ($_POST["imagecb4"] == "c") { uploadimg('file4','5'); } if ($_POST["imagecb5"] == "c") { uploadimg('fil5','6'); } if ($_POST["imagecb6"] == "c") { uploadimg('file6','7'); } if ($_POST["imagecb7"] == "c") { uploadimg('file7','8'); } if ($_POST["imagec8"] == "c") { uploadimg('file8','9'); } if ($_POST["imagecb9"] == "c") { uploadimg('file9','10'); } if ($_POST["imagecb10"] == "c") { uploadimg('file10','11'); } if ($_POST["imagecb11"] == "c") { uploadimg('file11','12'); } } //Lisätään tiedot tietokantaan mysql_query("INSERT INTO refkohteet (kohde, toimet1, toimet2, toimet3, toimet4, toimet5, toimet6, suunnittelu, vuosi, urakoitsija, isannointi) VALUES ('".$kohde."', '".$toimet1."', '".$toimet2."', '".$toimet3."', '".$toimet4."', '".$toimet5."', '".$toimet6."', '".$suunnittelu."', '".$vuosi."', '".$urakoitsija."', '".$isannointi."')"); //Otetaan id talteen mahdollista kuvien lähettämistä varten $pid = mysql_insert_id(); //Kirjoitetaan kuvien nimet tietokantaan. if ($_POST['imagecb'] == "c") { mysql_query("UPDATE refkohteet SET kuva1='".$nimi1."' WHERE id='".$pid."'"); } if ($_POST['imagecb1'] == "c") { mysql_query("UPDATE refkohteet SET kuva2='".$nimi2."' WHERE id='".$pid."'"); } if ($_POST['imagecb2'] == "c") { mysql_query("UPDATE refkohteet SET kuva3='".$nimi3."' WHERE id='".$pid."'"); } if ($_POST['imagecb3'] == "c") { mysql_query("UPDATE refkohteet SET kuva4='".$nimi4."' WHERE id='".$pid."'"); } if ($_POST['imagecb4'] == "c") { mysql_query("UPDATE refkohteet SET kuva5='".$nimi5."' WHERE id='".$pid."'"); } if ($_POST['imagecb5'] == "c") { mysql_query("UPDATE refkohteet SET kuva6='".$nimi6."' WHERE id='".$pid."'"); } if ($_POST['imagecb6'] == "c") { mysql_query("UPDATE refkohteet SET kuva7='".$nimi7."' WHERE id='".$pid."'"); } if ($_POST['imagecb7'] == "c") { mysql_query("UPDATE refkohteet SET kuva8='".$nimi8."' WHERE id='".$pid."'"); } if ($_POST['imagecb8'] == "c") { mysql_query("UPDATE refkohteet SET kuva9='".$nimi9."' WHERE id='".$pid."'"); } if ($_POST['imagecb9'] == "c") { mysql_query("UPDATE refkohteet SET kuva10='".$nimi10."' WHERE id='".$pid."'"); } if ($_POST['imagecb10'] == "c") { mysql_query("UPDATE refkohteet SET kuva11='".$nimi11."' WHERE id='".$pid."'"); } if ($_POST['imagecb11'] == "c") { mysql_query("UPDATE refkohteet SET kuva12='".$nimi12."' WHERE id='".$pid."'"); } } $do = "Kohde lisätty onnistuneesti!"; } //Muokkaus elseif ($toiminto == "Muokkaa"){ $editablename = $_POST['editablename']; $news2 = mysql_query("SELECT kohde, toimet1, toimet2, toimet3, toimet4, toimet5, toimet6, suunnittelu, vuosi, urakoitsija, isannointi FROM refkohteet WHERE kohde='".$editablename."'"); $news2 = mysql_fetch_array($news2); if ($editablename){$do = 4; $id2 = $news2['id']; $kohde2 = $news2['kohde']; $uutinen2 = $news2['uutinen']; $toimet2 = str_replace('<li>','*',$text2); } else { mysql_query("UPDATE refkohteet SET kohde='".$kohde."' WHERE id='".$id2."'"); $do = "Kohdetta muokattu onnistuneesti!"; }}} ?> <h3>Referenssikohteiden muokkaus</h3> <?php if ($logged){ ?> <?php if (empty($do)){ ?> <form method="post" action="refkohdedit_KESKEN.php" > <table align="center" cols="2"> <tr> <td width="3%"><input type="radio" name="toiminto" value="Poista"></td> <td>Poista yksi referenssikohde</td> </tr> <tr> <td width="3%"><input type="radio" name="toiminto" value="Muokkaa"></td> <td>Muokkaa referenssikohdetta</td> </tr> <tr> <td width="3%"><input type="radio" name="toiminto" value="Lisää"></td> <td>Lisää uusi referenssikohde</td> </tr> <tr><td colspan="2"><input type="submit" value="Suorita" name="submit" id="submit" /></td></tr> </table> </form> <?php }else{ ?> <form method="post" action="refkohdedit_KESKEN.php" enctype="multipart/form-data" > <?php if ($do == 1){?> <table align="center" cols="2"> <tr><td colspan="2"><select name="deletablename"><?php while (list($name) = mysql_fetch_row($sqle)) { echo ("<option>".$name."</option>");}?></select> </td></tr> <tr><td colspan="2"><input type="submit" value="Poista" name="toiminto" id="submit" /></td></tr> </table></form> <?php } elseif ($do == 2){?> <table align="left"> <tr><td>Kohde:</td></tr> <tr><td><input name="kohde" id="kohde" size="30" maxlength="50"/> </td></td> <tr><td>Vuosi:</td></tr> <tr><td><input name="vuosi" id="vuosi" size="5" maxlength="4"/> </td></td> <tr><td>Toimenpiteitä:</td></tr> <tr><td><li><input name="toimet1" id="toimet1" size="30" maxlength="45"/> </td></td> <tr><td><li><input name="toimet2" id="toimet2" size="30" maxlength="45"/> </td></td> <tr><td><li><input name="toimet3" id="toimet3" size="30" maxlength="45"/> </td></td> <tr><td><li><input name="toimet4" id="toimet4" size="30" maxlength="45"/> </td></td> <tr><td><li><input name="toimet5" id="toimet5" size="30" maxlength="45"/> </td></td> <tr><td><li><input name="toimet6" id="toimet6" size="30" maxlength="45"/> </td></td> <tr><td>Suunnittelu:</td></td> <tr><td><input name="suunnittelu" id="suunnittelu" size="30" maxlength="50"/> </td></td> <tr><td>Urakoitsija:</td></td> <tr><td><input name="urakoitsija" id="urakoitsija" size="30" maxlength="50"/> </td></td> <tr><td>Isännöinti:</td></td> <tr><td><input name="isannointi" id="isannointi" size="30" maxlength="50"/> </td></td> <tr><td>Valvonta:</td></td> <tr><td><input name="valvonta" id="valvonta" size="30" maxlength="50"/> </td></td> <tr><td> <table> <input type="checkbox" value="c" name="imagecb" onClick="javascript:toggleLayer('picture');"> Kuva <div" style="display:none" id="picture"> <input type="file" name="file"> <input type="checkbox" value="c" name="imagecb1" onClick="javascript:toggleLayer('pictur');"> Kuva2 </div> <div style="display:none" id="pictur"> <input type="file" name="file1"> <input type="checkbox" value="c" name="imagecb2" onClick="javascript:toggleLayer('pictu');"> Kuva3</div> <div align="left" style="display:none" id="pictu"> <input type="file" name="file2"/> <input type="checkbox" value="c" name="imagecb3" onClick="javascript:toggleLayer('pict');"> Kuva4</div> <div align="left" style="display:none" id="pict"> <input type="file" name="file3"> <input type="checkbox" value="c" name="imagecb4" onClick="javascript:toggleLayer('pic');"> Kuva5</div> <div align="left" style="display:none" id="pic"> <input type="file" name="fil4"> <input type="checkbox" value="c" name="imagecb5" onClick="javascript:toggleLayer('pi');"> Kuva6</div> <div align="left" style="display:none" id="pi"> <input type="file" name="file5"> <input type="checkbox" value="c" name="imagecb6" onClick="javascript:toggleLayer('p');"> Kuva7</div> <div align="left" style="display:none" id="p"> <input type="file" name="file6"> <input type="checkbox" value="c" name="imagecb7" onClick="javascript:toggleLayer('p1');"> Kuva8</div> <div align="left" style="display:none" id="p1"> <input type="file" name="file7"> <input type="checkbox" value="c" name="imagecb8" onClick="javascript:toggleLayer('p2');"> Kuva9</div> <div align="left" style="display:none" id="p2"> <input type="file" name="file8"> <input type="checkbox" value="c" name="imagecb9" onClick="javascript:toggleLayer('p3');"> Kuva10</div> <div align="left" style="display:none" id="p3"> <input type="file" name="file9"> <input type="checkbox" value="c" name="imagecb10" onClick="javascript:toggleLayer('p4');"> Kuva11</div> <div align="left" style="display:none" id="p4"> <input type="file" name="file10"> <input type="checkbox" value="c" name="imagecb11" onClick="javascript:toggleLayer('p5');"> Kuva12</div> <div align="left" style="display:none" id="p5"> <input type="file" name="file11"> </div> </div> </table> </td></tr> <tr> <td colspan="2"><input type="submit" value="Lisää" name="toiminto" id="submit" /></td></tr> </table></form> <?php } elseif ($do == 3){?> <table align="center" cols="2"> <tr><td colspan="2"><select name="editablename"><?php while (list($name) = mysql_fetch_row($sqlr)) { echo ("<option>".$name."</option>");}?></select> </td></tr> <tr><td colspan="2"><input type="submit" value="Muokkaa" name="toiminto" id="submit" /></td></tr> </table></form> <?php } elseif ($do == 4){?> <table align="center" cols="2"> <input type="hidden" name="id2" value="<?php echo $id2; ?>"/> <tr><td colspan="2"><textarea type="text" name="uutinen" id="teksti" cols="70" rows="4" ><?php echo $uutinen2; ?></textarea></td></tr> <tr> <td colspan="2"><input type="submit" value="Muokkaa" name="toiminto" id="submit" /></td></tr> </table></form> <?php } else { echo ("<p>".$do."</p>"); } }} //Jos ei ole kirjauduttu.. else { ?> <form method="post" action="refkohdedit_kesken.php"> <table cols="2" align="center"> <tr> <td>Käyttäjätunnus:</td> <td><input name="user"></td> </tr> <tr> <td>Salasana:</td> <td><input name="pass" type="password"></td> </tr> <tr> <td colspan="2"><input type="submit" value="Kirjaudu"></td> </tr> </table> </form> <?php } ?> </div></div></div> <div id="footer"></div> </body> </html> <?php //Suljetaan vielä lopuksi tietokantayhteys. mysql_close(); ?>
Onko scriptillä oikeus kirjoittaa kyseiseen hakemistoon? Muutoinkin tuota koodia voisi siistiä aika lailla, koska teet aivan turhaan käsin asioita, jotka voisit laittaa ohjelman tekemään. Esim. nuo staattiset kuvat 1 - 12 päivitykset ja vastaavat.
Pystyisköhän silmukoilla jotenkin lyhentämään noita toistoja?
Onko php.inin upload temp asetettu?
Juu ja tämän tyyppiset ilmot tulee sen takia että php.inin asetukset eivät ole oikein tai kansio jonne uploadataan ei ole CHMOD 777 tai joku muu että kirjoitusoikeudet on kaikilla. Tietty jos esim. Ubuntu plavelimella on omistajana ja groupina Apachen www-data kansioon jonne uplodataan niin ei tarvii säätää mitään CHMOD asetuksia tyyliin 777.
Kyllä tuo virheilmoitus tulee enemmän riittämättömistä oikeuksista, koska suomennoskin oli "Mahdoton siirtää -- hakemistoon --".
voisin siistiä muttakun en osaa.. :D mutta niin, chmodattu 777, php.ini uploadtemp on päällä, ja safe_mode on off jos se edes vaikuttaa tähän..
Katso siis mitä $_FILES['kuva']['error'] sanoo asiasta. Siistimistä kannattaa kyllä harjoitella, muuten urasi ohjelmoijana on kyllä kivinen ja raskas.
Kyllä opettelen, mutta olen kirjoittanut php:ta vasta reilu kuukauden.. enkä koe että olisi kuitenkaan ihan ensimmäinen asia opetella =)
miten tuo $_FILES['kuva']['error'] tapahtuu käytännössä?
näinkö?
echo $_FILES['kuva']['error'];
https://www.php.net/features.file-upload.errors
se antaa pelkän pyöreän nollan.
Koodistasi puuttuu muuttuja $file_name eli kohdetiedoston nimi. Näet virheilmoituksestakin, että kohteena on "kuvat/ref/" eikä "kuvat/rev/kuva.jpg".
Ei kannata luottaa selaimen lähettämään tyyppitietoon: voisin aivan helposti lähettää PHP-skriptin, jonka tyyppinä olisi "image/php" tai miksei vaikka "image/gif", ja kummatkin näistä menisivät koodistasi läpi.
tuo on kuitenkin salasana suojattu ja vain sisäverkossa käytettävissä jotenka en usko että on kauheasti väliä..
Kiitos vinkistä mutta eipä lähtenyt tuollakaan toimii vaan nyt antaa sitten vaan:
Warning: move_uploaded_file(/kuvat/ref/RKyNsSEPe8Q1ptf.
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpmxVl7t' to '/kuvat/ref/RKyNsSEPe8Q1ptf.jpg' in /home/sienimet/conditio/refkohdedit_kesken.php on line 165
Ilmeisesti lisäsit hakemiston alkuun ylimääräisen kenoviivan. Oikea hakemistohan on kuvat/ref eikä /kuvat/ref.
nönniin, kiitos kaikille avusta ja tuesta!
EDIT: Sama ongelma toistuu lisätessä yli kolmea kuvaa.
Upload-raja?
tarkistettu on, ei ole esteenä.
Tarkista, ettet taas ole tehnyt samanlaista virhettä (eli tarkista, että kohdenimi on oikea).
tarkistettu, kirjotin uuden vastaavanlaisen koodin ja lähti pelittämään..
Aihe on jo aika vanha, joten et voi enää vastata siihen.