Einzelnen Beitrag anzeigen

Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#19

Re: [PHP]ftp_get will nicht so wie ich es will

  Alt 4. Nov 2005, 08:58
Zitat von Luckie:
Das wollte mir auch alle bei ftp_put erklären und haben gesagt, das Script hätte keinen Zugriff auf meinem lokalen Rechner, um die Datei hochzuladen, letzt endlich ging es aber doch. Also muss es auch andersrum gehen. Ich habe nur noch nicht rausgefunden, was ich anders bzw. falsch mache.

Außerdem steht da ja:
Zitat:
Liest eine Datei von einem FTP-Server und speichert sie lokal (download)
Und lokal bedeutet für mich: 'hier bei mir und nicht auf dem Sever, wo das Script läuft'. Desweiteren habe ich schon Scripte gesehen und ausprobiert, die das auch konnten. Nur leider kann ich nicht nachvollziehen, was die anders machen als ich.

Also hört auf mir zu erzählen, dass das nicht ginge.
Wenn dir alle etwas anders erzählen, solltest du vielleicht mal anfangen nachzudenken...

Zitat von Luckie:
OK, gegenbeweis, hier mein Upload-Code:
Code:
    function upload_file($dest, $source, $mode)
    {
      $conn = ftp_connect(SERVER);
      ftp_login($conn, USER, PW);
      $result = ftp_put($conn, $dest, $source, $mode);
      ftp_close($conn);
      return $result;
    }
Code:
echo '<h3>Upload file&lt;/h3&gt;';
          echo '&lt;p&gt;';
          if ($_FILES['uploadfile']['size'] &lt; $MAX_FILE_SIZE)
          {
            if (!@upload_file('/'.$newpath.'/'.$_FILES['uploadfile']['name'], $uploadfile, FTP_BINARY))
            {
              echo 'Error!'.'&lt;br&gt;';
              echo 'File &lt;i&gt;'.$_FILES['uploadfile']['name'].'&lt;/i&gt; could not be saved in &lt;i&gt;'.$newpath.'&lt;/i&gt;';
              echo $_FILES['uploadfile']['error'];
            }
            else
            {
              echo 'File &lt;i&gt;'.$_FILES['uploadfile']['name'].'&lt;/i&gt; successfully saved in &lt;i&gt;'.$newpath.'&lt;/i&gt;&lt;br&gt;';
            }
            }
            else
            {
              echo 'The filesize of '.$_FILES['uploadfile']['name'].' ('.format_filesize($_FILES['uploadfile']['size']).') exceeds the allowed filesize of '.format_filesize(MAX_FILE_SIZE);
            }
Nichts mit move_uploaded_file .

Und es soll ein WebFTP Client für mich werden und es gibt Verzeichnisse außerhalb des Documentroot-Folders, an die ich mit dem Browser nicht drankomme, aber mit einem FTP-Client. Und an die möchte ich natürlich auch mit meinem WebFTP Client drankommen.

Desweiteren bedeutet bei ftp_put lokal auch wirklich lokal:
Zitat:
int ftp_put ( int ftp_stream, string remote_file, string local_file, int mode )
Und es sind ja explizit FTP-Funktionen, also es ist das FTP Protokoll, was dazu geschaffen wurde Dateien zwischen Rechnern auszutauschen.
Sicher geht das, du lädst ja etwas von deinem Server (dem FTP-Client) auf deinen Server (dem FTP-Server). Wenn in der PHP-Dokumentation "lokal" steht, dann meinen die den Rechner, auf dem PHP ausgeführt wird.

Jetzt noch einmal ausführlich von Jemandem, der seit ~3 Jahren richtig große Web-Applikationen mit PHP schreibt (> 50.000 Zeilen):

Wenn du einen Form-Based-File-Upload machst, also
Code:
<form method="post" action="meinscript.php">
<input type="file" ...>
</form>
und man damit eine Datei auswählt und das Formular abschickt, dann wird der Inhalt der Datei zusammen mit der Anfrage an deinen Webserver geschickt. Die Datei ist also schon auf dem Server wenn dein Skript ausgeführt wird.

Die Funktion move_uploaded_file dient nur dazu, die dafür angelegte temporäre Datei an die endgültige Position zu verschieben. Darum bekommt diese Funktion als Parameter auch die Namen von zwei Dateien auf deinem Server und nicht den ersten von deinem lokalen Rechner.

Wenn es anders nicht ginge, meinst du nicht dann gäbe es schon 1.000 Skripte für das, was du zu implementieren versuchst?

Ich muss jetzt los - wenn du es immer noch nicht glaubst, dann schreibe ich dir nachher ein kleines Skript...

@ripper8472: Bestärke ihn doch nicht noch in seinem Irrglauben, es ginge nur über eine FTP-Verbindung.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat