[PHP] File Upload werkt niet na chmod

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • avdwerf
  • Registratie: Maart 2007
  • Laatst online: 20:23
Hey,
Ik heb een klein upload scriptje ergens draaien, het script ziet er zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<html>
<head>
<title>File Upload</title>
</head>

<body>
<?
    if(isset($_POST["submit"])) {
        $filename = $_FILES['filename']['name'];
        move_uploaded_file($_FILES['filename']['tmp_name'],"/home/onlineid/www/upload/".$_FILES['filename']['name']);
        echo $filename." is succesvol geupload";
    }

?>
    <center>
    <h2>File Upload:</h2>
    <form name="upload" enctype="multipart/form-data" method="POST" action="<?=$PHP_SELF?>">
        <input type="file" name="filename">
        <input type="submit" name="submit" value="Uploaden">
    </form>
<?
    echo "<h2>File Overzicht:</h2>\n";
    echo "<br>\n"; 
    echo "<br>\n";
    $files = array();
    if($handle = opendir("/home/onlineid/public_html/upload/")) { 
        echo "<table class='normalText'>\n";
        while(($file = readdir($handle)) !== false) {
            $files[] = $file;
        }
        sort($files);
        foreach ($files as $key => $val) {
            echo "<tr>\n";
            echo    "<td width='600'>$file_ns</td>\n";
            echo "</tr>\n";
        }
        echo "</table>\n";
        closedir($handle); 
    }
?>
    </center>
</body>
</html>


Ik heb dit script geupload naar een server en dan kan ik de index.php gewoon bekijken. Echter om te uploaden moet de directory ge-chmod worden naar 0777 toch? Zodra ik de directory chmod waar dit script in staat, krijg ik de volgende error:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Als ik de directory dan weer chmod naar 0644 kan ik de pagina wel weer bekijken, waar kan dit aan liggen?

Acties:
  • 0 Henk 'm!

Verwijderd

@TS
Wat betekent 0777 en 0644?

[ Voor 3% gewijzigd door Verwijderd op 18-05-2007 14:15 ]


Acties:
  • 0 Henk 'm!

  • LaterGast.nl
  • Registratie: Juni 2002
  • Laatst online: 08-02-2024

LaterGast.nl

Doe je dat.

TS bedoelt waarschijnlijk (correct me if I am worng...)

GROUPS:
O - Owner/User
G - Group
P - Public/World

PERMISSIONS:
R - Read
W - Write
X - Executable
- - No Permission

O G P
CHMOD 777 RWX RWX RWX
CHMOD 775 RWX RWX R-X
CHMOD 755 RWX R-X R-X
CHMOD 664 RW- RW- R--
CHMOD 644 RW- R-- R--

Taking PORN off the internet is trying to get pee out of a swimming pool!!!


Acties:
  • 0 Henk 'm!

  • avdwerf
  • Registratie: Maart 2007
  • Laatst online: 20:23
je kunt een map toch chmodden, dan moet je een waarde opgeven, hij moet de waarde 0777 krijgen om files te kunnen uploaden, maar hij is nu 0644. Zodra ik hem dus chmod naar een andere waarde krijg ik die server error

*edit*
ik was weer iets te laat, idd LaterGast.nl....

[ Voor 11% gewijzigd door avdwerf op 18-05-2007 14:19 ]


Acties:
  • 0 Henk 'm!

Verwijderd

avdwerf schreef op vrijdag 18 mei 2007 @ 14:18:
je kunt een map toch chmodden, dan moet je een waarde opgeven, hij moet de waarde 0777 krijgen om files te kunnen uploaden, maar hij is nu 0644. Zodra ik hem dus chmod naar een andere waarde krijg ik die server error
Dan nogmaals de vraag: waarom moet je, om te kunnen uploaden, chmodden naar 0777? Wat betekent dat?
:)

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Zet je error reporting aan in je script en "Show friendly HTTP error messages" uit in IE.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • avdwerf
  • Registratie: Maart 2007
  • Laatst online: 20:23
@ mark platvoet
dat moet gewoon, omdat je anders geen rechten hebt om te uploaden, zoek anders op google naar "php file upload" :)

@CodeCaster
ik zal het eens proberen

Acties:
  • 0 Henk 'm!

Verwijderd

avdwerf schreef op vrijdag 18 mei 2007 @ 14:27:
@ mark platvoet
dat moet gewoon, omdat je anders geen rechten hebt om te uploaden, zoek anders op google naar "php file upload" :)
Ja daar was ik al een beetje bang voor. 'Dat moet gewoon' is natuurlijk niet het juiste antwoord. Hoe wil je achter een probleem komen als je niet weet wat je aan het doen bent? Programmeren is toch echt iets anders dan 'trial and error'. Zorg dus in eerste instantie dat je weet waar je mee bezig bent. :)

Acties:
  • 0 Henk 'm!

  • avdwerf
  • Registratie: Maart 2007
  • Laatst online: 20:23
Ik heb het al gevonden, de directory /home/onlineid/public_html/upload/ klopt niet, probleem opgelost dus :), toch bedankt voor de replies...

Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
volgens mij probeerde mark je in een richting te krijgen, door vragen te stellen :D

Acties:
  • 0 Henk 'm!

  • avdwerf
  • Registratie: Maart 2007
  • Laatst online: 20:23
hmmm, ik dacht dat het opgelost was, maar blijkbaar niet dus... iemand nog een suggestie waar dit aan kan liggen? En mark, ik weet wel wat die waardes betekenen, weet dus zeker wel waar ik mee bezig ben :)

[ Voor 52% gewijzigd door avdwerf op 21-05-2007 11:23 ]


Acties:
  • 0 Henk 'm!

  • robkamp
  • Registratie: Maart 2006
  • Laatst online: 19-09 22:13
De directory waar je bestanden eerst terechtkomen is /tmp (op linux dan) deze moet in ieder geval schrijfbaar zijn voor de gebruiker die httpd daemon gestart heeft (waarschijnlijk apache). Nu moet /tmp ook openstaan voor iedereen. Dus met een

code:
1
chmod -R 777 /tmp


heeft je proces httpd teogang en schrijfrechten op /tmp.

edit:

En ook je doeldirectory moet schrijfbaar zijn voor apache. Het beste is om de eigenaar van die directory te wijzigen naar apache, en dan de rechten aan te passen zodat alleen apache daar kan schrijven.


als volgt:


code:
1
2
chown -R apache:apache <directory waar geschreven moet worden> 
chmod 775 <directory waar geschreven moet worden>



HTH

[ Voor 31% gewijzigd door robkamp op 21-05-2007 12:05 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

avdwerf schreef op maandag 21 mei 2007 @ 11:22:
En mark, ik weet wel wat die waardes betekenen, weet dus zeker wel waar ik mee bezig ben :)
Gezien het feit dat je die map maar willekeurig naar 777 aan het chmodden bent (en uberhaupt een directory naar 644 loopt te chmodden) geeft mij anders toch sterk het idee dat Mark gelijk heeft en jij geen idee hebt waarom je welke rechten toekend.

Het antwoord op die vraag hoort niet 'omdat dat zo op php.net stond' te zijn.

Ik vermoed namelijk dat het best wel een zou kunnen zijn dat er een bepaalde security setting aan staat waardoor scripts in een world writable map niet uitgevoerd mogen worden.

[ Voor 14% gewijzigd door Janoz op 21-05-2007 11:44 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • robkamp
  • Registratie: Maart 2006
  • Laatst online: 19-09 22:13
avdwerf schreef op vrijdag 18 mei 2007 @ 14:02:
Echter om te uploaden moet de directory ge-chmod worden naar 0777 toch?
Niet de directory waar het script staat, maar daar waar de bestanden geplaatst moeten worden.

Acties:
  • 0 Henk 'm!

  • avdwerf
  • Registratie: Maart 2007
  • Laatst online: 20:23
644 was de originele waarde die de map krijgt als je hem aanmaakt, daarom chmodde ik hem terug naar die waarde, omdat dat de originele waarde was waarmee het script wel bereikbaar was...

Acties:
  • 0 Henk 'm!

Verwijderd

ik krijg ook sterk het vermoeden dat je niet helemaal op de hoogte bent van de werking van chmod.

Sowieso hoef je niet aan de rechten van het upload script te komen. Niemand hoeft dat script aan te kunnen passen e.d. dus deze te chmodden naar 777 is pointless. Daarentegen moet de map waar je de bestanden in wilt uploaden wel schrijfrechten hebben, omdat anders er geen bestanden in geplaatst kunnen worden. Kijk daarvoor naar de post van robkamp.

Acties:
  • 0 Henk 'm!

  • avdwerf
  • Registratie: Maart 2007
  • Laatst online: 20:23
ja dat had ik in het begin dus ook al gedaan, dit script staat in de root op de server en is niet gechmod. De map waar de uploads heenmoeten ( ./uploads/ ) heb ik dan gechmod naar 777, maar als ik dat dus doe dan krijg ik die internal server error...

Acties:
  • 0 Henk 'm!

Verwijderd

Misschien wil apache geen bestanden verplaatsen naar een directory waarin iedereen kan lezen/schrijven. waarom heb je hem gechmod naar 777 en niet naar bijv 775 en de owners van de map aangepast?

Acties:
  • 0 Henk 'm!

  • avdwerf
  • Registratie: Maart 2007
  • Laatst online: 20:23
dat had ik al geprobeerd, maar zodra iemand anders als de owner schrijfrechten krijgt krijg ik die server error, hoe zou ik dan eventueel de owners aan kunnen passen?
Pagina: 1