私は1ヶ月前に仕事をしていたことを知っているPHP経由でFTPを実行しているPCを持っていますが、もはや働いていません。私はPCを使用していることは知っていますが、変更された可能性は考えられません。PHPのftp_putが "データ接続を構築できません:接続が拒否されました"
PHPは、データ接続を構築することができません
を読んで、エラーメッセージを投げている:私は
ftp_put()
機能を使用するときに接続が...
を拒否しました。
私が使用してい伐採コードは次のとおりです。
<?php
$trackErrors = ini_get('track_errors');
ini_set('track_errors', 1);
$server="***.***.***.***";
$port=21;
echo "<LI>Connecting to $server:$port<BR>";
$conn_id = ftp_connect($server,$port,9999999) or die("<BR>Unable to connect to ".$server.":$port server.");
if (!$conn_id) {
$errmsg = $php_errormsg;
echo "<BR><LI>ERR:$errmsg";
}
else {
$passive=false;
echo "<LI>Setting Passive Mode=$passive";
ftp_pasv($conn_id, $passive);
$user="*********";
$pass="*********";
echo "<LI>Connecting as $user/*****";
if (!ftp_login($conn_id, $user, $pass)) {
$msg = "Failed to login to $selected_server as $user; <BR>check logincredentials in the Settings";
echo "<BR><LI>$msg";
$errmsg = $php_errormsg;
echo "<LI>ERR:$errmsg";
return $msg;
}
ftp_set_option($conn_id, FTP_TIMEOUT_SEC, 10000);
if ([email protected]_put($conn_id, "test.txt", "C:......test.txt", FTP_BINARY)) {
echo "<BR><LI>ftp_put failed";
$errmsg = $php_errormsg;
echo "<LI>ERR:$errmsg";
}
echo "<HR>Done";
}
?>
出力Webページが
Connecting to ***.***.***.***:21
Setting Passive Mode=
Connecting as *******/*****
ftp_put failed
ERR:ftp_put(): Unable to build data connection: Connection refused
Done
結果がftp_put()
がエラーメッセージを与えることで、ゼロを残しているとして、これを実行しているとき(0)バイトのファイルをサーバー上の正しいファイル名に置き換えます。
奇妙なことがあるが
- 同じコード/接続情報は、[OK]を別のラップトップ上で動作することである
- 問題がいくつかで発生したファイルを押すと同じ接続情報は、FileZillaをを使用して[OK]を作品
- サーバー(つまり、問題のある特定の宛先だけではありません)
また、これはパッシブモードとは関係がないようですこれを有効にしてください)
誰にも提案はありますか?
ありがとう
Abe
コマンドラインでnetstat -nを使用して、ftp_close()の直前でポート20と21が開いていることがわかります。 PHPのドキュメントには、ポート20がデータチャネルであることが示唆されていますが、問題が発生しているINBOUNDの問題(サーバーからPC)について話しています。 INBOUNDでポート20と21を開くためのファイアウォールルールを追加したので、PHPが動作することがわかります。しかし、PHPがポート20を望んでいる理由(Filezillaはしませんが)、(b)他のPCに同じ問題がない理由(どちらも会社のPC、同じモデル/年齢/ビルド)、 (c)私が採用すべきファイアウォールの修正(もしあれば)。 – user1432181
FileZillaはデフォルトでパッシブモードを使用しているので、重複した質問の答えが示唆するように、あなたは何をすべきでしょうか。 –
冗長なFileZillaログを表示します。 –