Mkdir
Een onderdeel in mijn scriptje is een mkdir. Nu maakt hij de mappen mooi aan maar ik kan ze niet aanpassen noch verwijderen! Heb al allerlij zaken geprobeerd maar niets lijkt te werken. De oorzaak ligt volgens mij bij de rechten die aan het bestand gegeven worden wanneer deze opgeslagen worden! Zou iemand hiervoor de oplossing kunnen brengen?
Alvast bedankt!
Jelle
Quote:
Code (php)
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?
// CODERING BESTANDSNAAM
$testje =$imth ;
if($testje != ""){
$codebestand = $testje;
} else{
$adresje = GetIP();
$mooiadresje = str_replace( ".", "", $adresje);
$willekeurig = rand();
$eindresultaat = time().$mooiadresje.$willekeurig;
$van = 'abcdefghij';
$naar = '0123456789';
$codebestand = strtr($eindresultaat, $naar, $van);
}
//Bestanden in juiste map plaatsen en indien nodig nieuwe map aanmaken
if (is_dir('./../../../fotos/'.$catnaam.'/')){
$bestemmingsmap = './../../../fotos/'.$catnaam.'/';
} else{
$nieuwemap = mkdir( "../../../fotos/".$catnaam."/", 0777);
$bestemmingsmap = './../../../fotos/'.$catnaam.'/';
}
//BESTANDSCOPY VAN IMPORTMAP NAAR DOELBESTEMMING
$image_link = 0;
$source = $HTTP_POST_FILES['file1']['tmp_name'];
$source_mime = $HTTP_POST_FILES['file1']['type'];
$origname = $HTTP_POST_FILES['file1']['name'];
$upload_size = $HTTP_POST_FILES['file1']['size'];
// don't allow anyone to be stupid
$filearray = explode(".",$origname);
$fileext = strtolower($filearray[count($filearray) - 1]);
$badext = "CGI PHP PL ASP HTM HTML php pl asp cgi htm html";
if($fileext != ""){
if(strstr($badext,strtoupper($fileext)))
$origname .= ".txt";
}
$upload_type = split("/",$source_mime);
if( ($source != 'none') && ($source != '')){
if( $upload_type[0] == "image" ){
$image_link = 1;
}
//vaststellen welke EXTENTIE
if (($fileext == "jpg") | ($fileext == "jpeg") | ($fileext == "JPG") | ($fileext == "JPEG")){
$codebestand .= ".jpg";
}
if (($fileext == "gif") | ($fileext == "GIF")){
$codebestand .= ".gif";
}
$dest = $bestemmingsmap.$codebestand;
$uploaden = move_uploaded_file($source,$dest);
chmod('./../../../fotos/'.$catnaam.'/', 0777);
if($uploaden) {
// if(!chmod($dest,0777)) {
// echo 'Kan de attributen van het bestand niet aanpassen!';
// }
} else {
echo 'FOUT: kan deze foto niet opslaan!';
}
echo "<br /><center>Foto uploaden OK !<br />$dest</center>";
echo "<p><a href=\"./uplform.php\">Nieuwe afbeelding uploaden</a></p>";
} else {
echo "Geen bestand geselecteerd!<br />";
return;
}
$image_stats = GetImageSize($dest);
$imagesize = $image_stats[3];
$image_height = round($image_stats[1]);
$image_width = round ($image_stats[0]);
$image_url = $bestand;
//TOEVOEGEN AAN DE DATABANK
$schrijfstring = str_replace("\"",""", $oms);
$schrijfstring = str_replace("'","'", $schrijfstring);
$newline = "INSERT INTO fotos VALUES ('$codebestand', '".stripslashes($schrijfstring)."', '".stripslashes($catnaam)."', 'neen')";
if (!$result = mysql_query($newline)){
print $newline;
exit;
}
?>
// CODERING BESTANDSNAAM
$testje =$imth ;
if($testje != ""){
$codebestand = $testje;
} else{
$adresje = GetIP();
$mooiadresje = str_replace( ".", "", $adresje);
$willekeurig = rand();
$eindresultaat = time().$mooiadresje.$willekeurig;
$van = 'abcdefghij';
$naar = '0123456789';
$codebestand = strtr($eindresultaat, $naar, $van);
}
//Bestanden in juiste map plaatsen en indien nodig nieuwe map aanmaken
if (is_dir('./../../../fotos/'.$catnaam.'/')){
$bestemmingsmap = './../../../fotos/'.$catnaam.'/';
} else{
$nieuwemap = mkdir( "../../../fotos/".$catnaam."/", 0777);
$bestemmingsmap = './../../../fotos/'.$catnaam.'/';
}
//BESTANDSCOPY VAN IMPORTMAP NAAR DOELBESTEMMING
$image_link = 0;
$source = $HTTP_POST_FILES['file1']['tmp_name'];
$source_mime = $HTTP_POST_FILES['file1']['type'];
$origname = $HTTP_POST_FILES['file1']['name'];
$upload_size = $HTTP_POST_FILES['file1']['size'];
// don't allow anyone to be stupid
$filearray = explode(".",$origname);
$fileext = strtolower($filearray[count($filearray) - 1]);
$badext = "CGI PHP PL ASP HTM HTML php pl asp cgi htm html";
if($fileext != ""){
if(strstr($badext,strtoupper($fileext)))
$origname .= ".txt";
}
$upload_type = split("/",$source_mime);
if( ($source != 'none') && ($source != '')){
if( $upload_type[0] == "image" ){
$image_link = 1;
}
//vaststellen welke EXTENTIE
if (($fileext == "jpg") | ($fileext == "jpeg") | ($fileext == "JPG") | ($fileext == "JPEG")){
$codebestand .= ".jpg";
}
if (($fileext == "gif") | ($fileext == "GIF")){
$codebestand .= ".gif";
}
$dest = $bestemmingsmap.$codebestand;
$uploaden = move_uploaded_file($source,$dest);
chmod('./../../../fotos/'.$catnaam.'/', 0777);
if($uploaden) {
// if(!chmod($dest,0777)) {
// echo 'Kan de attributen van het bestand niet aanpassen!';
// }
} else {
echo 'FOUT: kan deze foto niet opslaan!';
}
echo "<br /><center>Foto uploaden OK !<br />$dest</center>";
echo "<p><a href=\"./uplform.php\">Nieuwe afbeelding uploaden</a></p>";
} else {
echo "Geen bestand geselecteerd!<br />";
return;
}
$image_stats = GetImageSize($dest);
$imagesize = $image_stats[3];
$image_height = round($image_stats[1]);
$image_width = round ($image_stats[0]);
$image_url = $bestand;
//TOEVOEGEN AAN DE DATABANK
$schrijfstring = str_replace("\"",""", $oms);
$schrijfstring = str_replace("'","'", $schrijfstring);
$newline = "INSERT INTO fotos VALUES ('$codebestand', '".stripslashes($schrijfstring)."', '".stripslashes($catnaam)."', 'neen')";
if (!$result = mysql_query($newline)){
print $newline;
exit;
}
?>
Zie in je script regel 63 t/m 65 haal ff die dubbele // weg.
Gewijzigd op 05/08/2010 22:05:11 door Joey Drieling
Mij is geleerd dat in een webserver de volgende rechten gehanteerd moeten worden:
Bestanden :
Read only - 440
Read/Write - 660
Mappen:
Read only - 550
Read/write - 770
Als er bestanden in je map staan kan je zo ook niet verwijderen he..
660 is rw--rw----- is read write en er is geen verschil tussen mappen en bestanden, bestanden erven meestal rechten van de mappen. Verder is het vreemd dat je een map die je aangemaakt hebt niet kan weggooien. Het is onzin om daarvoor de rechten naar 777 oid te gaan zetten, dat is workaround. Als jij de map hebt aangemaakt mag jij hem ook weggooien. Maak je met php de map aan dan is de eigenaar apache en dan mag apache hem ook weggooien. Zoek de fout dus in je code en niet in de rechten en ga niet rommelen met rechten aanpassen. Geef geen rechten mee aan mappen/bestanden en zeker geen 0777 als je rechten mee moet geven geef dan 660 mee. Een directory waarin bestanden staan kan je niet weggooien, maak hem eerst leeg of doe een rm -rf of een rmdir -f
Gewijzigd op 05/08/2010 23:25:41 door Aad B
777 is geen beveiligingslek op voorwaarde dat het zich in een map bevind die strenger is, denk aan de public_html bijvoorbeeld geef die strengere rechten dan kan alles erin zonder risico 777 staan.
Zet alles, maar dan ook echt ALLES op 777... dan is het inderdaad gevaarlijk
De derde 7 is "world" en je zet dan dus alles open voor de "world". Is absoluut onnodig. Dit wordt altijd gedaan omdat men denkt dat dat problemen oplost maar het is symptoombestrijding, workaround en wat mij betreft knoeiwerk. Voordat je zegt zet ALLES op 777 zeg ik: Doe zorgvuldig foutanalyse en los de fout op en als het een rechten-fout is geef dan het juiste recht aan de betreffende map of bestand.
Gewijzigd op 06/08/2010 16:27:37 door Joey Drieling
Joey Drieling op 06/08/2010 16:03:40:
Ik heb dit zelf gedaan om dat de server de map/bestand dus de server als rechten had, en ik hem zelf niet kon bewerken een geen zin had om alles handmatig om te zetten. Ik weet dat het niet echt goed is maar weet anders geen oplosing.
Andere hoster nemen. 777 is nooit nodig.
Bij de meeste hosters waar je via php een map/bestand laat aan maaken staat de eigenaar op apache.
Joey Drieling op 06/08/2010 16:15:48:
Bij de meeste hosters waar je via php een map/bestand laat aan maaken staat de eigenaar op apache.
Een slechte hoster dus.
Want dat zou in principe betekenen dat als ze geen jail hebben (of een slechte) dat je zo alle bestanden van andere kan lezen.
antagonist.nl
starthosting.nl
yourhosting.nl
one.com
Ik heb het met chown(path, user); geprobeert werkt niet.
Gewijzigd op 06/08/2010 16:26:15 door Joey Drieling
Joey Drieling op 06/08/2010 16:23:16:
ik verschilende sites bij:
antagonist.nl
starthosting.nl
yourhosting.nl
one.com
antagonist.nl
starthosting.nl
yourhosting.nl
one.com
Oke. Dan zijn die dus slecht.
Waarom zou de hele wereld jou bestanden mogen uitlezen? Dat heeft toch geen reden. Het zijn toch jou bestanden.
IRL stop je papieren van jou toch ook niet bij iemand anders in de map...
Gewijzigd op 06/08/2010 16:29:49 door Joey Drieling