Safety Mode
Ik was bezig met het ontwerpen van een website met daarin een portfolio. Nu gaat er iets mis met het uploaden van de afbeeldingen (hij load wel up maar ik kan ze niet openen; niet genoeg rechten) en volgens de server komt dat door een of andere PHP Safe Mode. Volgens hen moet ik mijn script aanpassen, maar ik heb geen idee. Kan iemand mij hierbij helpen?
Dit is het bericht dat ik kreeg
Hoi Koen,
Dit heeft zo te zien te maken met PHP Safe Mode. We draaien dit nog niet zo lang overigens, en ook maar enkel op nieuwe servers. Ik weet niet of het voor jou technisch mogelijk is om de scripting aan te passen zodat hij om kan gaan met Php Safe Mode? Het is uiteraard wel veiliger namelijk. De reden dat we dit toepassen is dat we een tijd geleden een 'hack' hebben gehad door een klant welke een lek script had op zijn website (http://www.webwereld.nl/articles/44401/.html) en waardoor dus honderden sites getroffen waren. We hebben dit gelukkig op kunnen lossen, maar het had voorkomen kunnen worden. Open_Basedir, waarvan wij uitgingen dat dit tegen zou houden, deed dat niet voldoende. Met PHP Safe Mode is het niet mogelijk om dit nogmaals mee te maken. Uiteraard hebben we nog servers met Safe Mode off, dus mocht het niet mogelijk zijn de scripting aan te passen kan ik je site alsnog overzetten, maar voor ieders veiligheid kan je beter je scripting aanpassen indien je daar de kennis en tijd voor hebt.
Onze excuses voor het ongemak.
Dit is mijn code
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<?
include('../connect.php');
echo "<link rel='stylesheet' href='../body.css' type='text/css'>";
echo "<table width='100%' cellspacing='0' cellpadding='0'><tr><td>";
echo "<font face='verdana' size='1' color='black'>";
if ($_POST['upload']){
// opslaan
global $_FILES;
$filename = $_FILES['userfile']['name'];
// kijken of plaatje in geupload (tmp)
if (is_uploaded_file($_FILES['userfile']['tmp_name'])){
// plaatje naar map kopieieren
$bestand = "../doc/fotonieuw/".$filename;
if(move_uploaded_file($_FILES['userfile']['tmp_name'], $bestand)){
$allow[0] = "jpg";
$allow[1] = "gif";
$allow[2] = "png";
$allow[3] = "bmp";
$allow[4] = "peg";
$extentie = strtolower(substr($filename, -3));
for ($i = 0; $i < count($allow); $i++){
if($extentie == $allow[$i]){
$extentie_check = "ok";
}
}
if($extentie_check != "ok"){
echo "Deze extensie is niet toegestaan. Wel toegestaan zijn .jpg, .gif, .jpeg, .png en .bmp.";
} else {
$nummer = $_POST['nummer'];
$categorie = $_POST['categorie'];
$insert = "INSERT INTO portfolio (foto, nummer, categorie) VALUES ('$filename','$nummer','$categorie')";
mysql_query($insert) or die(mysql_error());
echo "Afbeelding uploaden gelukt.<p>";
echo "<a href='portfolio.php'>Terug</a>";
}
} else {
echo "Fout bij uploaden afbeelding.<p>";
echo "<a href='afbeeldingen.php'>Terug.</a>";
exit;
}
} else {
echo "Fout bij uploaden afbeelding. Is de afbeelding te groot?<p>";
echo "<a href='afbeeldingen.php'>Terug.</a>";
exit;
}
} else {
echo "<b>Voeg een foto toe aan je portfolio</b><p>";
echo "<form method='post' enctype='multipart/form-data' target='_self'>";
echo "<input type='hidden' name='MAX_FILE_SIZE' value='99999999999999'/>";
echo "Selecteer de foto (666 bij 500 px of 234,95 bij 176,39 mm)<br>";
echo "<input name='userfile' type='file'><br>";
echo " <br>";
echo "Rangnummer (0.01 t/m 99.99)<br>";
echo "<input type='text' name='nummer' maxlength='5'><br>";
echo " <br>";
echo "Categorie<br>";
echo "<select name='categorie'>";
echo "<option value='Fashion'>Fashion</option>";
echo "<option value='Travel'>Travel</option>";
echo "<option value='Beauty'>Beauty</option>";
echo "</select><br>";
echo " <br>";
echo "<input name='upload' type='submit' value='Upload'>";
echo "</form>";
}
echo "<hr>";
echo "<b>Verwijder een uit je portfolio</b><p>";
if($_GET['v'] != ""){
if($_GET['z'] == ""){
echo "Weet je zeker dat je deze foto wil verwijderen?<p>";
echo "<a href='portfolio.php?v=".$_GET['v']."&z=ja'>Ja</a><br>";
echo "<a href='portfolio.php'>Nee</a>";
} else {
$v = $_GET['v'];
$foto_select = mysql_query("SELECT * FROM portfolio WHERE id = '$v'") or die(mysql_error());
while($row = mysql_fetch_array($foto_select)){
$delete = mysql_query("DELETE FROM portfolio WHERE id = '$v' LIMIT 1") or die(mysql_error());
if(file_exists('../doc/fotonieuw/'.$row['foto'])){
unlink('../doc/fotonieuw/'.$row['foto']);
echo "De foto is verwijderd.<p>";
echo "<a href='portfolio.php'>Terug</a>";
} else {
echo "De foto kon niet worden verwijderd.<p>";
echo "<a href='portfolio.php'>Terug</a>";
}
}
}
} else {
$fotos_select = mysql_query("SELECT * FROM portfolio ORDER BY categorie,nummer") or die(mysql_error());
while($row = mysql_fetch_array($fotos_select)){
echo "<a href='portfolio.php?v=".$row['id']."'><font color='darkred'><b>X</b></font></a> ";
echo $row['categorie']." > ".$row['foto']." (# ".$row['nummer'].")<br>";
}
echo "</font>";
}
?>
</td></tr></table>
include('../connect.php');
echo "<link rel='stylesheet' href='../body.css' type='text/css'>";
echo "<table width='100%' cellspacing='0' cellpadding='0'><tr><td>";
echo "<font face='verdana' size='1' color='black'>";
if ($_POST['upload']){
// opslaan
global $_FILES;
$filename = $_FILES['userfile']['name'];
// kijken of plaatje in geupload (tmp)
if (is_uploaded_file($_FILES['userfile']['tmp_name'])){
// plaatje naar map kopieieren
$bestand = "../doc/fotonieuw/".$filename;
if(move_uploaded_file($_FILES['userfile']['tmp_name'], $bestand)){
$allow[0] = "jpg";
$allow[1] = "gif";
$allow[2] = "png";
$allow[3] = "bmp";
$allow[4] = "peg";
$extentie = strtolower(substr($filename, -3));
for ($i = 0; $i < count($allow); $i++){
if($extentie == $allow[$i]){
$extentie_check = "ok";
}
}
if($extentie_check != "ok"){
echo "Deze extensie is niet toegestaan. Wel toegestaan zijn .jpg, .gif, .jpeg, .png en .bmp.";
} else {
$nummer = $_POST['nummer'];
$categorie = $_POST['categorie'];
$insert = "INSERT INTO portfolio (foto, nummer, categorie) VALUES ('$filename','$nummer','$categorie')";
mysql_query($insert) or die(mysql_error());
echo "Afbeelding uploaden gelukt.<p>";
echo "<a href='portfolio.php'>Terug</a>";
}
} else {
echo "Fout bij uploaden afbeelding.<p>";
echo "<a href='afbeeldingen.php'>Terug.</a>";
exit;
}
} else {
echo "Fout bij uploaden afbeelding. Is de afbeelding te groot?<p>";
echo "<a href='afbeeldingen.php'>Terug.</a>";
exit;
}
} else {
echo "<b>Voeg een foto toe aan je portfolio</b><p>";
echo "<form method='post' enctype='multipart/form-data' target='_self'>";
echo "<input type='hidden' name='MAX_FILE_SIZE' value='99999999999999'/>";
echo "Selecteer de foto (666 bij 500 px of 234,95 bij 176,39 mm)<br>";
echo "<input name='userfile' type='file'><br>";
echo " <br>";
echo "Rangnummer (0.01 t/m 99.99)<br>";
echo "<input type='text' name='nummer' maxlength='5'><br>";
echo " <br>";
echo "Categorie<br>";
echo "<select name='categorie'>";
echo "<option value='Fashion'>Fashion</option>";
echo "<option value='Travel'>Travel</option>";
echo "<option value='Beauty'>Beauty</option>";
echo "</select><br>";
echo " <br>";
echo "<input name='upload' type='submit' value='Upload'>";
echo "</form>";
}
echo "<hr>";
echo "<b>Verwijder een uit je portfolio</b><p>";
if($_GET['v'] != ""){
if($_GET['z'] == ""){
echo "Weet je zeker dat je deze foto wil verwijderen?<p>";
echo "<a href='portfolio.php?v=".$_GET['v']."&z=ja'>Ja</a><br>";
echo "<a href='portfolio.php'>Nee</a>";
} else {
$v = $_GET['v'];
$foto_select = mysql_query("SELECT * FROM portfolio WHERE id = '$v'") or die(mysql_error());
while($row = mysql_fetch_array($foto_select)){
$delete = mysql_query("DELETE FROM portfolio WHERE id = '$v' LIMIT 1") or die(mysql_error());
if(file_exists('../doc/fotonieuw/'.$row['foto'])){
unlink('../doc/fotonieuw/'.$row['foto']);
echo "De foto is verwijderd.<p>";
echo "<a href='portfolio.php'>Terug</a>";
} else {
echo "De foto kon niet worden verwijderd.<p>";
echo "<a href='portfolio.php'>Terug</a>";
}
}
}
} else {
$fotos_select = mysql_query("SELECT * FROM portfolio ORDER BY categorie,nummer") or die(mysql_error());
while($row = mysql_fetch_array($fotos_select)){
echo "<a href='portfolio.php?v=".$row['id']."'><font color='darkred'><b>X</b></font></a> ";
echo $row['categorie']." > ".$row['foto']." (# ".$row['nummer'].")<br>";
}
echo "</font>";
}
?>
</td></tr></table>
Foutmelding?
Forbidden
You don't have permission to access /doc/foto/afbeelding.jpg on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Apache/1.3.37 Server at xxx.com Port 80
safe_mode = Off
Volgens mij moet je daar je php.ini mee kunnen overrulen
En je hebt geen error 404 document in je rootdir staan.
Hiermee krijg ik een Iternal server error.
Rechten van het plaatje = chmod 600 (hoe verander ik dit?).
Als ik het plaatje via ftp chmod rechten 777 geef, kan ik hem op de site bekijken. Echter, als ik dit via de site zelf doe krijgt het plaatje wel rechten 777 maar krijg ik nog steeds dezelfde 403 error.