cURL Upload 0 Byte

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • cURL Upload 0 Byte

    Zwar platziert das folgende Skript die Zieldatei im Zielverzeichnis, allerdings hat diese immer 0 Byte:
    PHP-Code:
    <?php
    $url 
    "ftp://benutzername: passwort@ftp.kundencontroller.de:21/www/data/pro/avatar.gif";
      echo 
    "Ziel: $url<br>"
    //$datei als URL funktioniert nicht
    $datei "http://www.website.de/bilder/avatar.gif";
      echo 
    "Quelle: $datei<br>"
    $ch curl_init();
    $fp fopen($datei"rb");
    curl_setopt($chCURLOPT_URL$url);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_UPLOAD1);
    curl_setopt($chCURLOPT_INFILE$fp);
    curl_setopt($chCURLOPT_INFILESIZEfilesize($datei)); 
    curl_exec($ch);
    curl_close($ch); 
    fclose($fp);
    ?>
    Server läuft mit PHP Version 4.4.8_pre20070816-pl0-gentoo. cURL ist enabled (libcurl/7.16.4 OpenSSL/0.9.8e zlib/1.2.3 libidn/0.6.9). Wo liegt der Fehler?
    Zuletzt geändert von weltvolk; 21.02.2008, 21:32.

  • #2
    Was gibt dir curl_exec denn zurück? Dreh das error_reporting mal hoch!

    Kommentar


    • #3
      Habe error_reporting(E_ALL) an den Anfang des Skriptes gesetzt, aber es wird keine Fehlermeldung ausgegeben. Liegt es daran, dass das Skript online ist? Vielleicht wäre das auch der Grund dafür, dass der cURL-Upload nicht funktioniert, geht es nur mit offline-Skripten?

      curl_exec gibt nichts zurück ...

      Kommentar


      • #4
        curl_exec gibt nichts zurück ...
        Das glaube ich dir nicht.
        PHP-Code:
        var_dumpcurl_exec$ch ) ); 
        ergibt?

        Kommentar


        • #5
          Was gibt denn filesize($fp) zurück?

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Was gibt denn filesize($fp) zurück?
            Wenn dann filesize($path)

            Kommentar


            • #7
              var_dump(curl_exec($ch)) gibt string(0) "" und var_dump(filesize($datei)) gibt bool(false) zurück

              Kommentar


              • #8
                Original geschrieben von weltvolk
                var_dump(filesize($datei)) gibt bool(false) zurück
                Na dann hast doch das Problem.
                Es ist nicht curl, sondern das, was du an curl übergibst.

                Funktioniert filesize mit dem http-wrapper überhaupt? Was für Header schickt die Datei? Content-Length vorhanden?
                Ansonsten kannst du die Datei auf deinem Server temporär zwischen speichern?

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  Stimmt, filesize() funktioniert so nicht, allerdings geht es mit der VirtualDocumentRoot-Pfadangabe:
                  PHP-Code:
                  $datei "/home/benutzername/www/data/bilder/avatar.gif"
                  Zuletzt geändert von weltvolk; 21.02.2008, 18:43.

                  Kommentar


                  • #10
                    Na darauf hättest auch früher ausweichen können…
                    Daten direkt aus dem Filesystem zu holen ist nämlich deutlich performanter, als über den Webserver zu gehen!

                    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                    Wie man Fragen richtig stellt

                    Kommentar


                    • #11
                      Ja, die Möglichkeit eines Datentransfers zwischen 2 Servern baue ich nun in einen FTP-Client ein. Da ist auch cURL-Download zu gebrauchen:
                      PHP-Code:
                      <?php
                      $url 
                      "ftp://benutzername: passwort@ftp.kundencontroller.de:21/www/data/bilder/avatar.gif";
                        echo 
                      "Quelle: $url<br>";
                      $datei "/home/benutzername/www/data/pro/avatar.gif";
                        echo 
                      "Ziel: $datei<br>";
                      $fp fopen($datei"wb");
                      $ch curl_init();
                      curl_setopt($chCURLOPT_URL$url);
                      curl_setopt($chCURLOPT_RETURNTRANSFER0);
                      curl_setopt($chCURLOPT_UPLOAD0);
                      curl_setopt($chCURLOPT_FILE$fp);
                      curl_exec($ch);
                      curl_close($ch);
                      fclose($fp);
                      ?>

                      Kommentar

                      Lädt...
                      X