Avatar billede wolstrup Nybegynder
23. april 2007 - 09:55 Der er 5 kommentarer

Restriction i uploadscript

Bruger dette ellers rigtig gode uploadscript fundet her på eksperten. I forbindelse med flytning af server er der dog opstået en fejl når man forsøger at uploade, tror fejlen skyldes at safemode ikke kan slåes fra på det nye hotel, men kan koden modificeres så det kan virke alligevel?

Fejlen der opstår:

Warning: copy(): SAFE MODE Restriction in effect. The script whose uid/gid is 1876/500 is not allowed to access /tmp owned by uid/gid 0/0 in /home/e/g/sv_egrdk/upload.php on line 77


Script:

<?php
/* Destination of Upload files..use / insted of \\ in UNIX */
define("DESTINATION1", "upload/");
define("DESTINATION2", "upload/");

/* Number of Upload files */
define("UPLOAD_NO", 5);


if($REQUEST_METHOD!="POST")
{
print "<form enctype=\"multipart/form-data\" method=post>\n";
print "<INPUT TYPE=\"hidden\" name=\"MAX_FILE_SIZE\"
value=\"3000000\">\n";
print "Fil upload<br><br><br>";
for($i=1; $i<=UPLOAD_NO; $i++)
{
print "<br>Billede $i&nbsp;&nbsp;&nbsp;&nbsp;";
echo "<input type=file name=infile$i>&nbsp;&nbsp;&nbsp;&nbsp;";

if($i%2==0)
print"";
}
echo "<br><br><input type=submit value=upload></form>\n";
}
else
{
/* handle uploads */
$noinput = true;
for($i=1; $noinput && ($i<=UPLOAD_NO); $i++)
{
if(${"infile".$i}!="none") $noinput=false;
}
if($noinput)
{
print "<big><B>Fejl, prøv igen.</B></big>";
exit();
}
echo("<p align='center'><b><font size='4'>Upload gennemført<br>");

echo("<table border='1' width='84%' height='52'
bordercolorlight='#008080' bordercolordark='#008080'>
<tr>
<td width='14%' bgcolor='#008000' height='21'><font
color='#FFFFFF'><b>Nr</b></font></td>
<td width='52%' bgcolor='#008000' height='21'><font
color='#FFFFFF'><b>Filnavn</b></font></td>
<td width='34%' bgcolor='#008000' height='21'><font
color='#FFFFFF'><b>Størrelse</b></font></td>
</tr>");

for($i=1; $i<=UPLOAD_NO; $i++)
{

$just=filesize(${"infile".$i});
$fp_size[i] = $just;

if(${"infile".$i}!="none")
{
copy(${"infile".$i}, DESTINATION1.${"infile".$i."_name"});
copy(${"infile".$i}, DESTINATION2.${"infile".$i."_name"});
unlink(${"infile".$i});
{
echo("<tr>
<td width='14%' height='19'>$i</td>
<td width='52%' height='19'>${"infile".$i."_name"}</td>
<td width='34%' height='19'>$fp_size[i]</td>
</tr>
");
}
}
}
echo "</table>";
}
?>
Avatar billede showsource Seniormester
23. april 2007 - 10:51 #1
Fejlen fortæller at du IKKE har adgang til "/tmp", som åbenbart er det dir som bruges som "tmp-dir" ved upload. Altså midlertidigt dir til upload

Har du mulighed for at uploade overhovedet?
Hvad står der for "file_uploads" i en

<?php phpinfo(); ?>
Avatar billede wolstrup Nybegynder
23. april 2007 - 11:15 #2
Kører også en phpfusion på serveren som har uploadfunktion til et galleri, og dette virker fint. file_uploads står til on i phpinfo.
Avatar billede showsource Seniormester
23. april 2007 - 11:49 #3
hmm ved sgutte lige, men du kan prøve med dette, som en start, evt.
( bruger session til at vise filnavne, og en header til at sende tilbage til uploadscript )

<?php
session_start();

$dist = "upload/";
$antal = 5;

if(isset($_FILES["upfile"]) && is_array($_FILES["upfile"]))
{

    for($a = 0; $a < count($_FILES["upfile"]); $a++)
    {

        if(is_uploaded_file($_FILES["upfile"]["tmp_name"][$a]))
        {
        move_uploaded_file($_FILES["upfile"]["tmp_name"][$a], $dist . $_FILES["upfile"]["name"][$a]);
        $_SESSION["files"]["navn"][$a] = $_FILES["upfile"]["name"][$a];
        $_SESSION["files"]["str"][$a] = filesize($dist . $_FILES["upfile"]["name"][$a]);
        }
    }

header("Location:". $_SERVER["PHP_SELF"]);
exit;
}
?>
<html><head><title>Upload af flere filer</title>

</head>
<body>

<form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
Max. upload p&aring; en gang: <b><?php echo min(ini_get("post_max_size"), ini_get("upload_max_filesize")); ?>b.!</b>

<?php
for($i = 0; $i < $antal; $i++) {
    echo"<br />\n<input name=\"upfile[]\" type=\"file\" size=\"48\">";
}
?>

<br />

<input type="submit" value="Upload">

</form>

<?php
if(isset($_SESSION["files"])) {
echo"<pre>";
print_r($_SESSION["files"]);
echo"</pre>";
unset($_SESSION["files"]);
}
?>

</body></html>
Avatar billede wolstrup Nybegynder
23. april 2007 - 12:42 #4
Jamen det er jo bare smukt, takker. Smid et svar..
Avatar billede showsource Seniormester
23. april 2007 - 12:57 #5
ingen point, ellers tak.
Og måske det er fordi du vil slette filen i tmp dir at den går galt?
Altså, upload_tmpdir har du kun læserettigheder til.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester