"Operation not permitted" bij upgeloade foto's
Hier volgt het script:
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
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
<?
$newwidth='500';
$newheight='500';
$dir = "images/";
$maxsize = 2900000; // maximum groote images
if (is_uploaded_file($_FILES['bestand']['tmp_name']))
{
if(filesize($_FILES['bestand']['tmp_name']) > $maxsize){
echo "<span style=\"color: red\">!! Foto 1 is te groot.</span><p>";
} else {
$pathinfo = pathinfo($_FILES['bestand']['name']);
$ext = strtolower($pathinfo["extension"]);
$a = ".$ext";
$naam= @foto_. date("dmyHis") .$a;
if ($ext == "jpeg" || $ext == "jpg" || $ext == "gif" || $ext == "png"){
move_uploaded_file($_FILES['bestand']['tmp_name'], $dir.$naam) or die("Onze excuses, maar het kan niet uploaden.
Waarschijnlijk is uw foto te groot.<br>
<a onclick=\"javascript:history(-1);\">Ga Terug en probeer iets anders!</A> ");
$pics=$dir.$naam;
list($width, $height) = getimagesize($pics);
if($width > $height && $newwidth < $width){
$newheight = $height / ($width / $newwidth);
} else if ($width < $height && $newheight < $height) {
$newwidth = $width / ($height / $newheight);
} else {
$newwidth = $width;
$newheight = $height;
}
if(preg_match("/.jpg/i", "$pics")){
$source = imagecreatefromjpeg($pics);
}
if(preg_match("/.jpeg/i", "$pics")){
$source = Imagecreatefromjpeg($pics);
}
if(preg_match("/.png/i", "$pics")){
$source = imagecreatefrompng($pics);
}
if(preg_match("/.gif/i", "$pics")){
$source = imagecreatefromgif($pics);
}
$thumb1 = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($thumb1, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
if(preg_match("/.jpg/i", "$pics")){
imagejpeg($thumb1,$dir.$naam,90);
}
if(preg_match("/.jpeg/i", "$pics")){
imagejpeg($thumb1,$dir.$naam,90);
}
if(preg_match("/.png/i", "$pics")){
imagepng($thumb1,$dir.$naam,9);
}
if(preg_match("/.gif/i", "$pics")){
imagegif($thumb1,$dir.$naam,90);
}
$x=$newwidth;
$y=$newheight;
}
else {
echo "<span style=\"color: red\">Foute extensie van foto 1!! Afbeeldingen mogen enkel gif, jpg, jpeg of png zijn!</span>";
}
}
}
?>
$newwidth='500';
$newheight='500';
$dir = "images/";
$maxsize = 2900000; // maximum groote images
if (is_uploaded_file($_FILES['bestand']['tmp_name']))
{
if(filesize($_FILES['bestand']['tmp_name']) > $maxsize){
echo "<span style=\"color: red\">!! Foto 1 is te groot.</span><p>";
} else {
$pathinfo = pathinfo($_FILES['bestand']['name']);
$ext = strtolower($pathinfo["extension"]);
$a = ".$ext";
$naam= @foto_. date("dmyHis") .$a;
if ($ext == "jpeg" || $ext == "jpg" || $ext == "gif" || $ext == "png"){
move_uploaded_file($_FILES['bestand']['tmp_name'], $dir.$naam) or die("Onze excuses, maar het kan niet uploaden.
Waarschijnlijk is uw foto te groot.<br>
<a onclick=\"javascript:history(-1);\">Ga Terug en probeer iets anders!</A> ");
$pics=$dir.$naam;
list($width, $height) = getimagesize($pics);
if($width > $height && $newwidth < $width){
$newheight = $height / ($width / $newwidth);
} else if ($width < $height && $newheight < $height) {
$newwidth = $width / ($height / $newheight);
} else {
$newwidth = $width;
$newheight = $height;
}
if(preg_match("/.jpg/i", "$pics")){
$source = imagecreatefromjpeg($pics);
}
if(preg_match("/.jpeg/i", "$pics")){
$source = Imagecreatefromjpeg($pics);
}
if(preg_match("/.png/i", "$pics")){
$source = imagecreatefrompng($pics);
}
if(preg_match("/.gif/i", "$pics")){
$source = imagecreatefromgif($pics);
}
$thumb1 = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($thumb1, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
if(preg_match("/.jpg/i", "$pics")){
imagejpeg($thumb1,$dir.$naam,90);
}
if(preg_match("/.jpeg/i", "$pics")){
imagejpeg($thumb1,$dir.$naam,90);
}
if(preg_match("/.png/i", "$pics")){
imagepng($thumb1,$dir.$naam,9);
}
if(preg_match("/.gif/i", "$pics")){
imagegif($thumb1,$dir.$naam,90);
}
$x=$newwidth;
$y=$newheight;
}
else {
echo "<span style=\"color: red\">Foute extensie van foto 1!! Afbeeldingen mogen enkel gif, jpg, jpeg of png zijn!</span>";
}
}
}
?>
Alle foto's komen dus in de map images, die gechmod is naar 777. Het probleem is dat ik de foto's niet kan downen via filezilla, als ik bv. een backup wil maken. Ik heb deze foto's dan willen chmodden naar 777, maar dan krijg ik "Operation not permitted". Hoe kan ik dus de owner veranderen? Met chown, maar hoe juist?
Ben je wel de eigenaar/administrator van de ftp?
$naam= @foto_. date("dmyHis") .$a;
preg_match is voor ingewikkelde patterns...
*EDIT*
Gebruik je eerder wel en later ga je met preg_ aan de slag...?
Waarom...
nog een EDIT
De maxsize bepaal jij niet... Dat doet de server met zijn instellingen.
zie ook mijn functie: http://www.phpfreakz.nl/forum.php?forum=1&iid=1135811#id1135828
Gewijzigd op 01/01/1970 01:00:00 door Lode
http://thelivery.be/apache.png [screenshot van filezilla]
Normaal staat er altijd bij Owner mijn username.
Van maxsize, dat wist ik, maar anders krijg je een niet-gebruiksvriendelijke error als je te grote bestanden upload.
Lode, wat bedoel je juist met preg_? En denk je dat dat de file permissions kan beïnvloeden? Weet er anders iemand hoe ik manueel in filezilla de file permissions kan wijzigen? Bij server -> Enter custom command ->chmod... krijg ik:
Command: chmod 777 /httpdocs/images
Response: 500 CHMOD not understood
Waarom niet gewoon een SSH terminal en daarmee chmodden? En php heeft ook een functie daarvoor, voor unix-based systems: chmod()
Onder $x=$newwidth; $y=$newheight; had ik dat al geprobeerd:
...Maar dat was natuurlijk fout, ik heb het nu in het midden gezet, zodat ik dit krijg:
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
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
<?
$newwidth='500';
$newheight='500';
$dir = "images/";
$maxsize = 6000000; // maximum groote images
if (is_uploaded_file($_FILES['bestand']['tmp_name']))
{
if(filesize($_FILES['bestand']['tmp_name']) > $maxsize){
echo "<span style=\"color: red\">!! Foto 1 is te groot.</span><p>";
} else {
$pathinfo = pathinfo($_FILES['bestand']['name']);
$ext = strtolower($pathinfo["extension"]);
$a = ".$ext";
$naam= @foto_. date("dmyHis") .$a;
if ($ext == "jpeg" || $ext == "jpg" || $ext == "gif" || $ext == "png"){
move_uploaded_file($_FILES['bestand']['tmp_name'], $dir.$naam) or die("Onze excuses, maar het kan niet uploaden.
Waarschijnlijk is uw foto te groot.<br>
<a onclick=\"javascript:history(-1);\">Ga Terug en probeer iets anders!</A> ");
chmod($dir.$naam, 0777);
$pics=$dir.$naam;
//...... verkleining enz.
$x=$newwidth;
$y=$newheight;
}
else {
echo "<span style=\"color: red\">Foute extensie van foto 1!! Afbeeldingen mogen enkel gif, jpg, jpeg of png zijn!</span>";
}
}
}
?>
$newwidth='500';
$newheight='500';
$dir = "images/";
$maxsize = 6000000; // maximum groote images
if (is_uploaded_file($_FILES['bestand']['tmp_name']))
{
if(filesize($_FILES['bestand']['tmp_name']) > $maxsize){
echo "<span style=\"color: red\">!! Foto 1 is te groot.</span><p>";
} else {
$pathinfo = pathinfo($_FILES['bestand']['name']);
$ext = strtolower($pathinfo["extension"]);
$a = ".$ext";
$naam= @foto_. date("dmyHis") .$a;
if ($ext == "jpeg" || $ext == "jpg" || $ext == "gif" || $ext == "png"){
move_uploaded_file($_FILES['bestand']['tmp_name'], $dir.$naam) or die("Onze excuses, maar het kan niet uploaden.
Waarschijnlijk is uw foto te groot.<br>
<a onclick=\"javascript:history(-1);\">Ga Terug en probeer iets anders!</A> ");
chmod($dir.$naam, 0777);
$pics=$dir.$naam;
//...... verkleining enz.
$x=$newwidth;
$y=$newheight;
}
else {
echo "<span style=\"color: red\">Foute extensie van foto 1!! Afbeeldingen mogen enkel gif, jpg, jpeg of png zijn!</span>";
}
}
}
?>
Nu worden de bestanden dus gechmod naar 777. Perfect!
Maar hoe kan ik nu nog de eerdere foto's, die nog niet 777 zijn, chmodden?
Je kunt die chmodden in je FTP client toch?
Status: Set permissions of '/httpdocs/images/foto_270708155959.jpg' to '777'
Command: SITE CHMOD 777 foto_270708155959.jpg
Response: 550 CHMOD 777 foto_270708155959.jpg: Operation not permitted
Dan een PHP scriptje dat een dir opent en alle bestanden list en die dan één voor één chmodden.
Bestaat er niets leuker :)
sasa schreef op 07.02.2009 15:33:
Bestaat er niets leuker :)
Ja hoor, maar dat heeft weer niks met php te maken. ;-)
Wat Tommy voorstelt is toch heel simpel te maken.
Alvast erg bedankt allemaal!