[php]Probleem met bestand verplaatsen via ftp.fput

Pagina: 1
Acties:
  • 357 views

Onderwerpen


Acties:
  • 0 Henk 'm!

  • geertvduin
  • Registratie: Februari 2001
  • Laatst online: 17-07 20:17
Goedenavond,

Ik heb een probleem met een script dat inene niet meer werkt.
Wanneer ik het scripts test op PHP 5.0 dan gaat het perfect.
Maar op PHP 5.2 genereert het errors.

Uitleg:
Een ander script genereert een pagina genaamd ***.pag
Dit script functioneerd goed, want ik zie het bestand **.pag keurig verschijnen.
Daarna moet onderstaand script het bestand verplaatsen dmv ftp naar een andere server.
En dat werkt inene niet meer.
Er word een bestand aangemaakt van 0 kb dat corrupt is.

Zien jullie de fout?


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//#################################################################################################
//  FUNCTION:   MoveFiles
//  DATE:       01-01-2007      REVISION:   1       
//#################################################################################################
  function MoveFiles() {
  global $ftp_server, $ftp_rem_port, $ftp_user_name, $ftp_user_pass, $remote_tt_dir;
  $files = array();

    if ($handle = opendir('.')) {
      while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != ".." && !is_dir($file) && substr($file, -4) == ".pag") {
        echo "$file\n";

          $files[] = $file;
        }
      }
      closedir($handle);
    }
    $files[] = "Control.dat";
    $files[] = "Update2.sem";

    // set up basic connection
    $conn_id = ftp_connect($ftp_server, $ftp_rem_port);

    // Set the network timeout to 'x' seconds.
    ftp_set_option($conn_id, FTP_TIMEOUT_SEC, $timeout_sec);

    // login with username and password
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

    foreach($files as $file) {
      $fp = fopen($file, "r+");
echo $file;

      // try to upload $file
      if (!ftp_fput($conn_id, $remote_tt_dir.$file, $fp, FTP_BINARY)) {
        echo "There was a problem while uploading $file\n";
      }

      // close the connection and the file handler
      fclose($fp);
      unlink($file);
    }
    ftp_close($conn_id);
  }

Acties:
  • 0 Henk 'm!

  • Phoenix1337
  • Registratie: April 2009
  • Laatst online: 12-09 18:17
Misschien handig als je de errors dan ook even post.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 11-09 20:27

Matis

Rubber Rocket

Persoonlijk zal ik de
PHP:
1
2
3
4
5
6
7
8
9
10
if ($handle = opendir('.')) {
      while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != ".." && !is_dir($file) && substr($file, -4) == ".pag") {
        echo "$file\n";

          $files[] = $file;
        }
      }
      closedir($handle);
    }


Herschrijven met de functies
Inlezen van alle bestanden uit de map: http://php.net/manual/en/function.scandir.php en met deze constructie kun je al de dot-folders elimineren.
Daarna kun je met de funtie pathinfo op deze manier de extentie uitlezen:
PHP:
1
pathinfo ( $filename , PATHINFO_EXTENSION);

Indien dat de extentie oplevert die jij wil, dan kun je ze aan files[] toevoegen. Je zou ook eventueel met een SPL-iterators kunnen werken.
Je hoeft namelijk het wiel niet opnieuw uit te vinden :P

Ook zijn wat errors of warnings erg prettig. Zet ook error_reporting en display_errors aan :)

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • geertvduin
  • Registratie: Februari 2001
  • Laatst online: 17-07 20:17
Ik zal de errors zo plaatsen.

Maar het blijft toch erg vreemd dat het script perfect werkt op een server met 5.0
En niet op een server met versie 5.2 (terwijl volgens de hoster alleen het php platform geupgrade is)

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
geertvduin schreef op zondag 20 februari 2011 @ 20:41:
Ik zal de errors zo plaatsen.

Maar het blijft toch erg vreemd dat het script perfect werkt op een server met 5.0
En niet op een server met versie 5.2 (terwijl volgens de hoster alleen het php platform geupgrade is)
Niet als je nagaat dat er wat dingen veranderd zijn in 5.1 en 5.2 die backwards compatibility stuq (kunnen) maken. Lees dat eens door en probeer te achterhalen wat relevant is mbt jouw script. Mogelijk heeft het iets te maken met beveiliging, file toegang, of hoe PHP omgaat met verbindingen naar buiten (o.a. mbt ftp). En ja, foutmeldingen zouden handig zijn, die geven waarschijnlijk ook wel hints naar wat het probleem is.

Acties:
  • 0 Henk 'm!

  • afraca
  • Registratie: April 2009
  • Laatst online: 13-08 16:46

afraca

Open Source!

Kleine note: de SPL iterators zijn leuk, maar erg brak gedocumenteerd, DM voor kleine vraagjes, anders topic

IMDB vote history | Next-gen OS, audio en video player, search engine en Movie DB


Acties:
  • 0 Henk 'm!

  • geertvduin
  • Registratie: Februari 2001
  • Laatst online: 17-07 20:17
Warning: ftp_fput() [function.ftp-fput]: File status okay; about to open data connection. in DELETE/functions.php on line 662

There was a problem while uploading 611-0001.pag
Warning: ftp_fput() [function.ftp-fput]: Data connection closed abnormally. in DELETE/functions.php on line 662
There was a problem while uploading 612-0000.pag

[ Voor 108% gewijzigd door geertvduin op 20-02-2011 22:16 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
geertvduin schreef op zondag 20 februari 2011 @ 21:59:
Warning: ftp_fput() [function.ftp-fput]: File status okay; about to open data connection. in DELETE/functions.php on line 662

There was a problem while uploading 611-0001.pag
Warning: ftp_fput() [function.ftp-fput]: Data connection closed abnormally. in DELETE/functions.php on line 662
There was a problem while uploading 612-0000.pag
En dus heb je een mooi startpunt om te gaan kijken wat er loos is in die files op de betreffende regels. Icm o.a. deze post en gewoon de PHP documentatie moet je een heel eind komen. Verder is (met name) je topicstart niet meer dan een "dit is mijn code *dump* het werkt niet, wat is er fout" en dat is niets meer dan een quickfix en daar zijn we hier niet zo happig op ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.