Valerij: CHMOD will nicht gestzt werden.

So nach zwei jähriger Suche habe ich endlich den gesuchten Script gefunden und gekauft. Jetzt habe ich einige Änderungen vorgenommen nur leider funktioniert da etwas nicht an den Chmod.
Das script lädt die Fotos hoch ändert deren Name und setzt die Schreibrechte des Bildes auf 0777 oder 0644. So sollte es normal funktionieren. Tut es aber nicht bzw nicht auf der Webspace sondern nur auf dem lokale Server (XAMPP).
Woran könnte es liegen?
hier der Code

<?php
class fileupload
{
 var $prefix;
 var $uploadpath;
 var $allowedextensions;

var $_FILES;

function fileupload($prefix, $inputfield, $uploadpath)
 {
  $this->prefix = $prefix;
  $this->uploadpath = $uploadpath;
  $this->allowedextensions = array();

$this->_FILES = &$_FILES[$inputfield];
 }

function setallowedextensions()
 {
  $arguments = func_get_args();
  for ($i = 0; $i < func_num_args(); $i++)
  {
   $this->allowedextensions[] = $arguments[$i];
  }
 }

function removeallowedextensions()
 {
  $arguments = func_get_args();
  for ($i = 0; $i < func_num_args(); $i++)
  {
   $this->allowedextensions = array_values(array_diff($this->allowedextensions, array($arguments[$i])));
  }
 }

function unsetallowedextensions()
 {
  unset($this->allowedextensions);
  $this->allowedextensions = array();
 }

function getallowedextensions()
 {
  return implode(", ", $this->allowedextensions);
 }

function getfilename()
 {
  $filename = explode(".", $this->_FILES['name']);

if(count($filename) > 1)
  {
   $filename[count($filename) - 1] = "";
   $filename = implode(".", $filename);
   return strtolower(substr($filename, 0, strlen($filename) - 1));
  }
 }

function getextension()
 {
  $extension = explode(".", $this->_FILES['name']);
  if(count($extension) > 1) return strtolower($extension[count($extension) - 1]);
 }

function getfilesize()
 {
  return $this->_FILES['size'];
 }

function checkfile()
 {
  return ($this->_FILES['tmp_name'] && $this->_FILES['tmp_name'] != "none" ? TRUE : FALSE);
 }

function checkextension()
 {
  return (in_array($this->getextension(), $this->allowedextensions) ? TRUE : FALSE);
 }

function doupload($insert_id)
 {
  $uploadpath = "./".$this->uploadpath."/".$this->prefix.$insert_id.".".$this->getextension();

if(@move_uploaded_file($this->_FILES['tmp_name'], $uploadpath))
  {
   chmod($uploadpath, 0755);
   return TRUE;
  }
  else {
   return FALSE;
  }
 }
}
?>

  1. Hallo Valerij.

    Siehe letzter Abschnitt: [...] chmod($uploadpath, 0755);
    Ändere 0755 in 0777 oder 0644 und das Skript funktioniert.

    Gruß,
    Markus

    if(@move_uploaded_file($this->_FILES['tmp_name'], $uploadpath))
    {
      chmod($uploadpath, 0755);
      return TRUE;
    }
    else {
      return FALSE;
    }

    1. Hallo Valerij.

      Siehe letzter Abschnitt: [...] chmod($uploadpath, 0755);
      Ändere 0755 in 0777 oder 0644 und das Skript funktioniert.

      Gruß,
      Markus

      if(@move_uploaded_file($this->_FILES['tmp_name'], $uploadpath))
      {
        chmod($uploadpath, 0755);
        return TRUE;
      }
      else {
        return FALSE;
      }

      ne es funktioniert nicht hatte ja schon probiert alle möglichen rechte. Nach dem Upload hat das hochgeladene foto immer die rechte 0600 egal was ich da oben eingebe.

  2. Hallo,

    Das script lädt die Fotos hoch ändert deren Name und setzt die Schreibrechte des Bildes auf 0777 oder 0644. So sollte es normal funktionieren. Tut es aber nicht bzw nicht auf der Webspace sondern nur auf dem lokale Server (XAMPP).
    Woran könnte es liegen?

    Es liegt nicht am Script. Es liegt daran, dass der Webserver mit einer User-Id läuft, die ein chmod nicht gestattet. Außerdem ist das eine Frage der Sicherheit und die wäre schlecht, wenn es möglich wäre dass 'wwwrun' oder wie die UID des Webservers heißt, Dateien ausführbar machen kann.

    Dein Provider hat es bestimmt so eingerichtet, dass Du mit Deinem FTP-Client die Dateien händisch ausführbar machen oder andere Berechtigungn setzen kannst.

    Viele Grüße vom Baumarkt,
    Hotte

  3. Und was soll ich jetzt tun?

    1. Und was soll ich jetzt tun?

      1. denjenigen, der dafür Geld verlangt, erschiessen. Bei chmod gehört der Rückgabewert auf Erfolg geprüft
      2. Für eine Datei reicht 0666 aus, da sie mit Sicherheit nicht ausgeführt werden muss
      3. schau ins Serverlog
      4. Frag deinen Provider, ob generell chmod erlaubt ist.

  4. Habe den Provider angerufen gehabt der hatte mir gesagt, dass da php irgendwie als cgi installiert ist und ich soll meinen script umschreiben nur leider habe ich keinen blassen Schimmer davon wie ich überhaupt vorgehen soll. Ich bin ein totaler Neuling was PHP angeht und von CGI und Pearl brauch ich überhaupt nicht zu reden.
    Jetzt meine Frage könnte mir einer von euch vielleicht einen Tipp geben oder sogar vielleicht meinen Code abändern. Ich wäre dafür sehr dankbar. Ich meine das nervt mich übelst dass ich die rechte immer mit FileZilla ändern muss.

    Danke im voraus.

    1. ... und Pearl brauch ich überhaupt nicht zu reden.

      Kein Wunder. Diese Programmiersprache war nie für das Web gedacht und
      spielt seit den 80igern eh keine Rolle mehr.

      Jetzt meine Frage könnte mir einer von euch vielleicht einen Tipp geben oder sogar vielleicht meinen Code abändern.

      Der Code funktioniert auch bei PHP-CGI. Wenn nicht, liegt das Problem woanders.

      Mach mal das @ in der Zeile if(@move_uploaded_file($this->_FILES['tmp_name'], $uploadpath))
      weg. Dann packst du noch die Zeile

      error_reporting(E_ALL);

      nach <?php und schaust mal welche Fehlermeldungen es gibt. Nach diesen
      kannst du dann googlen oder bei php.net nachlesen.