Oprettet søn. d. 25. november 2007 kl. 13:16:48

challenge
challenge (9.345 point. Point ude: 60)

mkdir og upload dertil

Hej alle.

Jeg kan, via et PHP-script, oprette en mappe vha. mkdir. Da jeg, af en eller anden grund, ikke kan sætte chmod direkte i mkdir'en, gør jeg det lige efter med en normal chmod-command.

Problemet opstår da jeg, via et upload-script, skal uploade et billede til mappen - det er ikke muligt, selvom chmod er sat til 0777 - opretter jeg derimod manuelt en mappe, og giver den 0777 chmod manuelt, vil den gerne uploade billedet - hvorfor?

(Hvis i har brug for en speciel del af koden, please tell me :) )

Mvh.

Skrevet søn. d. 25. november 2007 kl. 21:06:23| #1

jakobdo
jakobdo (181.727 point)
www.codebreaker.dk
Problemet er at du via ftp opretter mappen og chmod'er den, så kan du fint sætte den til chmod 777.
Når du gør det samme via php kode, så er det php/apache som er ejeren af filen/processen.
Du kan ikke løse dit problem med en smart kommando, desværre.

Skrevet søn. d. 25. november 2007 kl. 23:07:17| #2

challenge
challenge (9.345 point)
Vil det sige at der aldrig vil kunne uploades til en mappe oprettet af php?

Skrevet søn. d. 25. november 2007 kl. 23:22:40| #3

showsource
showsource (32.621 point)
Det her virker fint for mig på en freebsd/apache

<?php
$root = $_SERVER["DOCUMENT_ROOT"];
$url_link = "/upload/";
$dist = $root . $url_link;

if(!is_dir($dist)) {
echo"Opret uploaddir!";
exit;
}

if(!is_writeable($dist)) {
echo"Tjek skriverettigheder på ". $dist ." !!!!!<br />";
exit;
}

?>

<form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
Vælg fil:<br>
<input name="upfile" type="file"><br>
Filer uploades til mappen: <?php echo $dist; ?>
<br />
eller indtast nyt navn til dir: <input type="text" name="newdir">
<br />


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

<?php
if (isset($_FILES["upfile"])) {

if(!empty($_POST["newdir"])) {

mkdir($dist . $_POST["newdir"], 0777);
chmod($dist . $_POST["newdir"], 0777);

$dist = $dist . $_POST["newdir"] ."/";
$url_link .= $_POST["newdir"] ."/";
}
        if(move_uploaded_file($_FILES["upfile"]["tmp_name"], $dist . $_FILES["upfile"]["name"])) {
        echo"Filen, ". $_FILES["upfile"]["name"] ." er uploadet. <a href=\"". $url_link . $_FILES["upfile"]["name"] ."\">". $_FILES["upfile"]["name"] ."</a>";
        }else{
        echo"Filen blev ikke uploadet?";
        }
}
?>

Skrevet man. d. 26. november 2007 kl. 08:01:50| #4

jakobdo
jakobdo (181.727 point)
www.codebreaker.dk
showsource: Det kommer jo meget an på hvordan selve serveren/webhotellet er sat op.
Så for nogle virker det, andre gange gør det ikke.

Skrevet man. d. 26. november 2007 kl. 08:10:03| #5

showsource
showsource (32.621 point)
ehh, hvordan mener du, altså hvad skulle gøre det IKKE kan gøres, udover disabling af chmod m.m. ?

Skrevet man. d. 26. november 2007 kl. 08:15:19| #6

jakobdo
jakobdo (181.727 point)
www.codebreaker.dk
Om man kan lave mkdir() og chmod() er jo udelukkende et spørgsmål om rettigheder.
Og jeg har set eksempler på at disse filer kommer til at blive ejet af NOBODY/NOBODY
Og dermed kan php ikke tilgå dem efterfølgende.
Der er muligvis tale om dårlig opsæt af webhotellet, men mkdir() / chmod() vil ikke virke efter hensigten.

Skrevet man. d. 26. november 2007 kl. 08:21:51| #7

showsource
showsource (32.621 point)
ehhh, hvis ejer bliver bliver nobody, er det vel forkert chmod som er skyld i det ?
Eller forkert chmod/ejer af filen som laver dirs/filer ?

Skrevet man. d. 26. november 2007 kl. 08:51:20| #8


Skrevet tor. d. 29. november 2007 kl. 23:28:47| #9

challenge
challenge (9.345 point)
Tak begge to - smid et svar hver :)
(jeg valgte at lade være med at bruge mapper, men i stedet bar at kalde dem <id>_<rand>.jpg

Skrevet fre. d. 30. november 2007 kl. 08:28:37| #10

jakobdo
jakobdo (181.727 point)
www.codebreaker.dk
Svar!
Du ville evt. også kunne styre det med en database.

Skrevet lør. d. 01. december 2007 kl. 07:06:38| #11

showsource
showsource (32.621 point)
ingen point til mig, ellers tak

Skrevet lør. d. 01. december 2007 kl. 15:51:33| #12

challenge
challenge (9.345 point)
Ok - tak begge to.

Jakob - ikke dårlig idé. Det er dog intet problem uden.

Skrevet lør. d. 01. december 2007 kl. 18:16:12| #13


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Brugerliste med link til profil

Oprettet den 26. maj 2012 kl. 14.29
sayn giver 30 point for svar | Giv et svar »

php curl driller

Oprettet den 26. maj 2012 kl. 08.31
PHPnQrd giver 200 point for svar | Giv et svar »

Array i array

Oprettet den 25. maj 2012 kl. 08.32
sebster giver 60 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger