[PHP] File op FTP server downloaden

Pagina: 1
Acties:

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik wil in PHP een file op een andere FTP server openen en de inhoud in een variable hebben.
Nou dacht ik dat ik gewoon de fopen functie kon gebruiken, maar deze FTP moet een wachtwoord hebben met een '@' erin. Dit is dus een probleem, omdat de '@' ook het begin van de host aangeeft.
Ook kan ik de standaard FTP functies in PHP gebruiken, maar dan MOET ik een lokale file opgeven waar de inhoud van de file inkomt te staan. Ook niet echt de bedoeling.

Wat is de oplossing dan?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Ik denk in een temp-file downloaden, vervolgens dat openen en vervolgens verwijderen. Maar ik neem aan dat je dat wel al bedacht had. Anders weet ik het ook niet zo snel... Of je moet met fsockopen een eigen ftp-client gaan maken door het FTP-protocol te implementeren...

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op vrijdag 19 oktober 2001 22:49 schreef elnino het volgende:
Ik denk in een temp-file downloaden, vervolgens dat openen en vervolgens verwijderen. Maar ik neem aan dat je dat wel al bedacht had. Anders weet ik het ook niet zo snel... Of je moet met fsockopen een eigen ftp-client gaan maken door het FTP-protocol te implementeren...
Dat laatste is idd een optie. Maar wel een beetje erg omslachtig. Het enige wat ik wil is een file van een FTP. Vind het vreemd dat het zo vreemd moet. :)

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 09-09 14:51

thomaske

» » » » » »

of je wachtwoord veranderen, zodat er geen @ meer inzit.. >:) ;)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op zaterdag 20 oktober 2001 00:52 schreef thomaske het volgende:
of je wachtwoord veranderen, zodat er geen @ meer inzit.. >:) ;)
Goed bedacht, maar het gaat hier gewoon om een publieke FTP, die wil graag een wachtwoord in de vorm: user@domain.ext

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
bij de voorbeelden op fopen staat gewoon dit:
code:
1
$fp = fopen ("ftp://user:password@example.com/", "w");

dus wat is het probleem?

[edit]je kunt het anders ook met tmpfile en fget doen.

  • TheDjasp
  • Registratie: Juni 2001
  • Laatst online: 26-06 08:16

TheDjasp

het wordt toch niks

Het probleemn is dat er in zijn geval dit zal staan:
code:
1
$fp = fopen("ftp://anonymous:piet@gazelle.nl@somewhere.com");

Zie je de 2 '@'-en?

Omdat het KAN, HOEFT het nog niet!
I haven't been ignoring you; I've been prioritizing you. Hanglooz; "chromeless windows en fullscreen zuigen allebei als een 1600Watt Nilfisk"
logt nu ook


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
ok, ik snap 'em ;)

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op zaterdag 20 oktober 2001 01:09 schreef marcusk het volgende:
ok, ik snap 'em ;)
Opletten en lezen scheelt!

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Op zaterdag 20 oktober 2001 01:07 schreef TheDjasp het volgende:
code:
1
$fp = fopen("ftp://anonymous:piet@gazelle.nl@somewhere.com");

Zie je de 2 '@'-en?
Werkt het niet als je die @ escapet? Zo dus:
code:
1
$fp = fopen("ftp://anonymous:piet\@gazelle.nl@somewhere.com");

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Als ik probeer
PHP:
1
2
3
<?
file("ftp://anonymous:piet\@gazelle.nl@somewhere.com")
?>

dan geeft ie een error
code:
1
2
3
Warning: php_network_getaddresses: getaddrinfo failed: No address associated with hostname 

Bad file descriptor

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

ftp:// is een URI (als php dat tenminste maar denkt).

dus: je kan gewoon rawurlencode gebruiken, zoals:
code:
1
2
3
fopen('ftp://'.rawurlencode($user).
    ':'.rawurlencode$password).
    '@'.'domein.com/path/file');

Verwijderd

Anders is misschien het curl pakketje ook een optie?
Hier staat daar meer over.

Verwijderd

Wat is de oplossing dan?
fsockopen() && rtfm
dan kom je al een heel eind

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 23-07 15:18

Tim

en dan
fwrite("USER boe");
fwrite("PASS bla@t");

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Dus gewoon een eigen FTP implementatie maken. Maar hoe haal je die file dan op?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik heb onderhand de oplossing gevonden voor die extra '@': ipv die eerste '@' doe je %40:
PHP:
1
2
3
<?
$ftp = "ftp://anonymous:user%40domain.ext@ftp.chello.nl/pub/chello-cdrom/6.0/help/help.ini";
?>

:)

Maar nu heb ik weer een heel ander probleem. De FTP server kan down zijn, maar kan geen timeout opgeven. Iemand? :)

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

ipv die eerste '@' doe je %40:
Ja, ja: rawurlencode() ;)
Maar nu heb ik weer een heel ander probleem. De FTP server kan down zijn, maar kan geen timeout opgeven. Iemand? :)
Mwa, als de ftp server down is kan je er niet naar connecten en zal na enkele seconden (onder de 20 ofzo) de fopen() falen. Ik zie het probleem niet.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op zaterdag 20 oktober 2001 14:58 schreef lnfinitive het volgende:

[..]

Mwa, als de ftp server down is kan je er niet naar connecten en zal na enkele seconden (onder de 20 ofzo) de fopen() falen. Ik zie het probleem niet.
Situatie:
- De FTP server is down
- DNS van de server werkt wel

Probeer ik dan een file te openen duurt het wel 10 minuten voordat ie een time-out geeft.

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Mmm. de timeout is groter dan ik had verwacht. Misschien dat je in dit geval toch beter wat geavanceerdere functies moet gaan gebruiken?

Kan je geen timers in php gebruiken?

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Op zaterdag 20 oktober 2001 15:04 schreef jelmervos het volgende:
Probeer ik dan een file te openen duurt het wel 10 minuten voordat ie een time-out geeft.
Je kan eerst even een fsockopen() met een timeout van 1 of 2 seconden doen. Komt die goed terug, kun je je file openen.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op zaterdag 20 oktober 2001 15:10 schreef Gerco het volgende:

[..]

Je kan eerst even een fsockopen() met een timeout van 1 of 2 seconden doen. Komt die goed terug, kun je je file openen.
Da's een creative oplossing, bedankt!

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Op zaterdag 20 oktober 2001 15:13 schreef jelmervos het volgende:
Da's een creative oplossing, bedankt!
Dat gebruiken ACM en ik ook om te controleren of bepaalde services op de server goed werken. Gewoon fsockopen() en als 'ie faalt, dan service restarten, lukt dat niet, mailtje naar root :)

Ik gebruik het zelfs ook om services op mijn eigen bak te checken van buiten mn firewall, erg handig moet ik zeggen.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!

Pagina: 1