Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP ongelma

Sivun loppuun

laurii [07.10.2009 11:46:26]

#

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&ouml;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&auml;ytt&auml;j&auml;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();
?>

Teuro [07.10.2009 12:04:47]

#

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.

Lebe80 [07.10.2009 12:05:48]

#

Pystyisköhän silmukoilla jotenkin lyhentämään noita toistoja?

walkout_ [07.10.2009 13:44:00]

#

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.

Teuro [07.10.2009 14:35:29]

#

Kyllä tuo virheilmoitus tulee enemmän riittämättömistä oikeuksista, koska suomennoskin oli "Mahdoton siirtää -- hakemistoon --".

laurii [07.10.2009 14:58:30]

#

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..

Teuro [07.10.2009 15:04:20]

#

Katso siis mitä $_FILES['kuva']['error'] sanoo asiasta. Siistimistä kannattaa kyllä harjoitella, muuten urasi ohjelmoijana on kyllä kivinen ja raskas.

laurii [07.10.2009 15:11:18]

#

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ä?

<?php
if($_FILES['kuva']['error'] == UPLOAD_ERR_OK) {
}
else {
	echo 'Ei onnistu';
}

näinkö?

tsuriga [07.10.2009 17:03:05]

#

echo $_FILES['kuva']['error'];
https://www.php.net/features.file-upload.errors

laurii [07.10.2009 17:53:39]

#

se antaa pelkän pyöreän nollan.

Metabolix [07.10.2009 17:59:08]

#

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.

laurii [07.10.2009 18:00:50]

#

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.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/sienimet/conditio/refkohdedit_kesken.php on line 165

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

Metabolix [07.10.2009 18:25:28]

#

Ilmeisesti lisäsit hakemiston alkuun ylimääräisen kenoviivan. Oikea hakemistohan on kuvat/ref eikä /kuvat/ref.

laurii [07.10.2009 20:08:58]

#

nönniin, kiitos kaikille avusta ja tuesta!
EDIT: Sama ongelma toistuu lisätessä yli kolmea kuvaa.

Triskal [07.10.2009 22:00:13]

#

Upload-raja?

laurii [07.10.2009 22:01:47]

#

tarkistettu on, ei ole esteenä.

Metabolix [08.10.2009 12:27:20]

#

Tarkista, ettet taas ole tehnyt samanlaista virhettä (eli tarkista, että kohdenimi on oikea).

laurii [08.10.2009 19:37:46]

#

tarkistettu, kirjotin uuden vastaavanlaisen koodin ja lähti pelittämään..


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta