Ik heb hier een mooi scriptje gevonden om foto's te verkleinen en up te loaden. Het werkt perfect, buiten dat "owner/group" "apache:apache" wordt, waardoor ik niet de juiste rechten heb.
Hier volgt het script:

<?
$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?
Ik twijfel of regel 19 goed is:

$naam= @foto_. date("dmyHis") .$a;
kijk eens naar pathinfo(); en strtolower(); om een extensie te matchen.
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
Ik ben de eigenaar van de ftp, maar als er foto's upgeload worden dan ben ik daar niet meer de eigenaar van, ziehier:
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()
Tommy,
Onder $x=$newwidth; $y=$newheight; had ik dat al geprobeerd:
<?
chmod($dir.$naam, 0777);
?>

...Maar dat was natuurlijk fout, ik heb het nu in het midden gezet, zodat ik dit krijg:
<?
$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?
Dat gaat juist niet... Als ik in filezilla rechterklik->File Permissions... en dan 777 zet, dan krijg ik:

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 :)

Reageren