Hello,
Irtam egy programot PHP-ben, mely egy par KB-os fajlt tolt fel FTP-n keresztul egy szerverre.
Tokeletesen mukodik is az egesz, de 5 gepbol 2 gepen nem megy, pedig tok ugyanaz a szotfver/hardver kornyezet (FreeBSD 6.2, Apache 2.2, PHP5 - mindenhol FTP extension telepitve, php.ini default, ipfw kifele minden engedve), sot van olyan is hogy 2 gep egymas mellett van es egyikrol megy masikrol nem.
Az alabbi hibauzenetet kapom:
Warning: ftp_fput(): Could not open data connection to port 38721: Operation timed out in /home/www/feltolt.php on line 104
There was a problem while uploading valami.txt
A feltolteshez hasznalt kod:
$file = "valami.txt";
$fp = fopen($file, 'r');
$ftp_server = 'SZERVER';
$ftp_user_name = 'USER';
$ftp_user_pass = 'PASSW';
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if (ftp_fput($conn_id, $file, $fp, FTP_ASCII)) {
echo "Successfully uploaded $file\n";
} else {
echo "There was a problem while uploading $file\n";
}
ftp_close($conn_id);
fclose($fp);
Probaltam mar az ftp_nb_fput-ot is, de azzal is ugyanez a szitu.
A fajl megvan, szerver oldalon a logban megjelenik hogy a login oke, tovabba a mappaba is megjelenik egy pure-f3bqw4gfq387 fajl, de 0 bajtos.
Ha van valakinek valami otlete varom!
Koszi
- 1031 megtekintés
Hozzászólások
Ja, es amit elfelejtettem, ha MC-vel vagy siman ftp parancsal FTP-zek akkor megy a dolog.
- A hozzászóláshoz be kell jelentkezni
Valószínűleg aktív-passzív probléma lesz.
Mivel nem írtál a kapcsolódáshoz portot, ezért az alapértelmezett TCP/21-en megy. Ehhez aktívban a szerver által nyitott 20-as portról jön a kliens felé a kapcsolat, passzívnál pedig a szerver felé megy 1024 feletti portra. Itt most ez a helyzet, a 38721-es a célport. Az ftp parancs alapesetben aktív kapcsolatot épít ki, ez működik.
Vagy használj aktív módot (ftp_pasv), vagy a tűzfalat és/vagy a NAT-olást kell rábírni az FTP-kapcsolat megfelelő kezelésére.
- A hozzászóláshoz be kell jelentkezni
Támogatja a PHP az active és paassive FTP-t is? Mert ez pl. lehet egy különbség.
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
Tamogatja a php is a passziv modot.
Koszi a megoldas(oka)t, beleirtam az ftp_fput utani sor ele kozvetlenul ezt:
ftp_pasv($conn_id, true);
.. es mar meg is a feltoltes.
- A hozzászóláshoz be kell jelentkezni