chmod bei upload einstellen

Begonnen von ThomasK, 10 Juni 2002, 19:40:59

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

ThomasK

Hallo Leute,

da ich auf meine Anfrage in einem anderen Thread leider noch immer keine Antwort bekommen habe, eröffne ich nochmal einen frischen Beitrag.

Ich habe das File_Archives - Modul (Download) installiert. Läuft hervorragend. Auch das uploaden klappt, aber das Runterladen von neu eingefügten Dateien nicht (Err. 403).

Das Verzeichnis hat 777 als chmod, aber die hochgeladenen Dateien stehen auf 600 (Lesen/Schreiben). Wenn ich die Attribute per Hand im FTP.Manager ändere, geht es.

Der Trick ist ja gerade, dass ich mir durch das Uploaden den FTP-Manager sparen will. Wenn ich darin die Werte ändern muss, kann ich auch damit die Dateien hochstellen. Kann man darauf Einfluss nehmen, dass die Dateien gleich 644 haben?

Würde mich über ne Antwort sehr freuen, da wir auch Admins haben, die den Download-Bereich pflegen sollen, die nicht mit nem FTP-Programm arbeiten können und wollen.

Herzlichen Dank! :) Thomas#

Joschau

Hi Thomas!

Ich beschäftige mich auch gerade mit dem Problem, aber ich habe es noch nicht 100%ig unter Kontrolle. Aber vielleicht hilft Dir folgender Auszug aus dem deutschen PHP-Handbuch:

chmod
(PHP 3, PHP 4 >= 4.0.0)

chmod -- Ändert die Zugriffsrechte einer Datei
Beschreibung
int chmod ( string filename, int mode)


Diese Funktion ändert die Zugriffsrechte der Datei spezifiziert in filename in die Zugriffsrechte um, die in mode spezifiziert sind.

Bedenken Sie, das mode nicht automatisch für einen Oktalwert gehalten wird. Um sicher zu gehen, dass die Operation wie erwartet verläuft sollten Sie mode mit dem Prefix NULL (0) versehen:


chmod ("/somedir/somefile", 755);   // dezimal; möglicherweise falsch
chmod ("/somedir/somefile", "u+rwx,go+rx"); // String; falsch      
chmod ("/somedir/somefile", 0755);  // oktal; richtiger Wert von mode
 



Gibt bei Erfolg TRUE zurück, im Fehlerfall FALSE.

Siehe auch chown() und chgrp().

Anmerkung: Diese Funktion ist auf Windows-Plattformen nicht implementiert.



Greetz

Jochem

ThomasK

Danke Joschau. Wenn ich es richtig verstehe, läuft es normalerweise richtig, aber bei meinem Server warum auch immer nicht. D.h. mit dem Befehl "chmod" kann ich einer Datei dann aus PHP heraus gleich die richtigen Werte mitgeben, ohne ins FTP-Programm zu müssen, ja?

Nur, wo soll ich das einfügen?

Hier ist der Teil "Upload" aus der Admin-Datei des Moduls:

#The upload-form
      opentable();
      $date = getdate();
      echo "<table width=\"100%\" border=\"0\" cellpadding=\"1\" cellspacing=\"2\">";
      echo "<form name=\"edit\" method=\"post\" enctype=\"multipart/form-data\" action=\"admin.php\">";
      echo "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"20000000\">";
      echo "<tr><td colspan=\"2\"><b>"._ADDARTICLE."</b></td></tr>";
      echo "<tr><td>"._FILENAME.":</td><td><input type=\"file\" name=\"file1\"></td></tr>";
    //  echo "<tr><td>Thumb:</td><td><input type=\"file\" name=\"file2\"></td></tr>";
      echo "<tr><td>"._TITLE.":</td><td><input type=\"text\" name=\"newname\"></td></tr>";
      echo "<tr><td>"._CATEGORY.":</td><td><select name=\"newcat\">";
      foreach($catList as $n => $element) echo "<option value=\"$n\">$element</option>";
      echo "</select>";
      echo "<tr><td>"._DESCRIPTION."</td><td><textarea name=\"newsearch\" COLS=\"30\" ROWS=\"5\"></textarea></td></tr>";
      echo $hiddenInfo;
      echo "<input type=\"hidden\" name=\"do\" value=\"add\">";
      echo "<tr><td colspan=\"2\"><input type=\"submit\" name=\"add\" value=\""._ADDARTICLE."\"></td></tr>";
      echo "</form></table>";
      closetable();
      echo "<br><br>";

Wo kann man das einfügen?
Bist Du mittlerweile vielleicht schon weiter gekommen?

Danke Dir! :)
CU Thomas#

Joschau

Hi Thomas!

Ich hatte das Problem bei mir erst mal "auskommentiert" ;)

Ich denke, Du wendest den Befehl nicht unmittelbar in der Upload-Funktion an (dazu gleich mehr),  sondern erst in der Folgefunktion, wenn die Datei nämlich auf den Server hochgeladen und umkopiert ist. Wenn Du beispielsweise die Datei in das Verzeichnis /modules/Downloads/files kopierst, muss der Befehl meiner Meinung nach lauten:

if(chmod ("modules/Downloads/files/deineDatei.???", 0644)){
echo "chmod erfolgreich";
}else{
echo "chmod misslungen";
}


Aber wie schon gesagt: 100% hab ich das noch nicht unter Kontrolle. Vor allem sollte man vorher wohl auch noch testen, ob der Server auf Unix-Basis arbeitet.

Wegen Einbau ins Upload-Formular:

Das erscheint mir nur nötig, wenn Du verschiedene chmods vergeben willst. Dann könntest Du ein zusätzliches Feld einplanen, in das Du den chmod-Code (755, 644 etc) eingibst und baust in die chmod-Funktion selbst dann eine entsprechende Variable ein.


ThomasK

Ja, super! Es funktioniert. Man mag es kaum glauben... :)

Habe es so eingebunden (falls jemand das gleiche Problem hat) in der Datei admin/modules/file_archives.php:

#Add a new Entry
      } elseif ($do == "add") {
          opentable();
          set_time_limit(600);
          if (move_uploaded_file($file1, "$archivesFilesFolder$file1_name")) {
                if ($file2 && move_uploaded_file($file2, "$archivesThumbsFolder$file2_name")) {
                        $thumbname = $file2_name;
                } else {
                        $thumbname = '';
                }
              $sql = "INSERT INTO l2l_archives (id, url, name, date, cat, search, thumb) VALUES ('','$file1_name', '$newname', now(), '$newcat', '$newsearch', '$thumbname')";
              if (!sql_query($sql, $dbi) == 1) {
                 echo "<b>Error while adding an article!</b><br>";
              } else {
                 echo "<b>Article <i>$newname</i> uploaded and added!</b><br>";
              }
          } else {
              echo "<b>Error while uploading!</b><br>";
          }
          if(chmod ("files/$file1_name", 0644)){
echo "chmod erfolgreich";
}else{
echo "chmod misslungen";
}

Beim Upload wird dadurch automatisch 644 gesetzt, man kann es dann direkt downloaden.

Vielen Dank, Joschau!

Schönen Tag noch, Thomas# :D

Sven

Hi,

auf deinen Tread hatte ich keine Lösung, weil der normale Benutzer (der Webbenutzer) auf einem normal installierten Web kein CHMOD machen kann. Jedenfalls bekam ich immer ne Fehlermeldung. Aber schön wenn es geht. Du könntest mir natürlich mal die Datei zuschicken damit ich das ins Original reinbauen kann.

Du brauchst nur den Quelltext mit dem Schnipsel von oben zu ergänzen.

Weitere Änderungen habe ich nicht gemacht (außer Datei umbenannt...). Gruß Thomas#

Sven

Jo,
mach ich. Wie gesagt ich habe es net rausgekriegt bzw. ne Fehlermeldung bekommen. Na da werde ich es dann mal einbauen und euch zwei hier mit erwähnen in der Datei. Denn Ehre wem Ehre gebührt ;)

Sven

Hi,

so das Update ist erfolgt und die Sache funzt genauso wie oben beschrieben. Ihr könnt es euch also unter http://www.it-fragen.info/downloads/Files_Archives.zip herunterladen und drüberinstallieren.
Nochmals danke an Joschau und Thomas für die Hilfe.

ThomasK

Super cool. Du hast sogar meine URL mit aufgenommen. :) Das ist mein erster "Credit" in irgendeinem Quelltext. Wow! :D

Danke!

ZitatHallo Leute,

da ich auf meine Anfrage in einem anderen Thread leider noch immer keine Antwort bekommen habe, eröffne ich nochmal einen frischen Beitrag.

Ich habe das File_Archives - Modul (Download) installiert. Läuft hervorragend. Auch das uploaden klappt, aber das Runterladen von neu eingefügten Dateien nicht (Err. 403).

Das Verzeichnis hat 777 als chmod, aber die hochgeladenen Dateien stehen auf 600 (Lesen/Schreiben). Wenn ich die Attribute per Hand im FTP.Manager ändere, geht es.

Der Trick ist ja gerade, dass ich mir durch das Uploaden den FTP-Manager sparen will. Wenn ich darin die Werte ändern muss, kann ich auch damit die Dateien hochstellen. Kann man darauf Einfluss nehmen, dass die Dateien gleich 644 haben?

Würde mich über ne Antwort sehr freuen, da wir auch Admins haben, die den Download-Bereich pflegen sollen, die nicht mit nem FTP-Programm arbeiten können und wollen.

Herzlichen Dank! :) Thomas#

Joschau

Hi Sven!

Wenn das mal hinsichtlich meiner Person nicht zu viel der Ehre ist...grins

Freut mich aber trotzdem!

Und nu verratet mir doch bitte mal, um welches Modul ging es eigentlich??? ;)

Joschau

ogott...hilfe...ich bin erblindet ;)

da frag ich depp nach, um welches Modul es ging und Sven hat oben den Download verlinkt...ähem....schäm...beim nächsten Mal lese ich wieder genauer

Sven

hihi,

@Joschau LOL. Ich war ja auch absolut blind mit der Funktion. Ich habe da ein paar mal probiert und der wollte net. Na ja. Jetzt kann ich die Funktion auch woanders nehmen ;).
@ ThomasK und Joschau,
Ich denke mal, dass das selbstverständlich sein sollte, Leute die bei der Entwicklung oder Verbesserung behilflich sind zu erwähnen. Jedenfalls in der Datei die es betrifft. Selbst der Paladin hat mich wirklich kleine Leuchte im PHP Nuke Bereich auf seiner Seite und in seinen Modulen erwähnt. Ich denke das dieses eine Selbstverständlichkeit ist.