現在の位置: ホーム> 最新記事一覧> FTP_PASVを使用する場合、エラーを回避するためにFTPサーバーを構成するにはどうすればよいですか?簡単な説明

FTP_PASVを使用する場合、エラーを回避するためにFTPサーバーを構成するにはどうすればよいですか?簡単な説明

M66 2025-07-04
<span><span>--------------------------------------------------

使用 ftp_pasv 時間,FTP エラーがないようにサーバーを構成する方法?簡単な説明

--------------------------------------------------

存在する PHP で使用されます ftp_pasv 関数はパッシブモードを有効にします(Passive Mode)接続する FTP サーバ時間,常常会遇到接続する失败或数据传输真ん中断的问题。これは主に次のものです FTP サーバー構成は、ネットワーク環境と1つ致しません,クライアントがデータチャネルを正しく確立できないようにします。この記事では、使用について詳しく説明します ftp_pasv 時間,FTP サーバーを構成する方法,才能保证接続する稳定、滑らかなトランスミッション。

1つ、FTP アクティブモードとパッシブモードの簡単な説明  
FTP 接続する由控制接続する和数据接続する组成。アクティブモード(Active Mode)真ん中,クライアントはサーバーにそれを伝えますIPおよびポート,サーバ主动接続する客户端进行数据传输;パッシブモード(Passive Mode)サーバーは、クライアントにデータポートを指示します,客户端主动接続するサーバ。パッシブモード通常适合客户端处于防火墙或NAT环境時間使用。

二、なぜ使用するのか ftp_pasv?  
存在する现代网络环境真ん中,多くの場合、クライアントはファイアウォールまたはルーターの後ろにあります,アクティブモード接続する因被动防火墙阻挡而失败。開ける ftp_pasv パッシブモード后,クライアントはこれらの制限をバイパスできます,主动接続するサーバ指定的端口进行数据传输,これにより、成功率が向上します。

三つ、FTP サーバーを構成する方法?  
</span><span><span class="hljs-number">1</span></span><span>. **配置パッシブモード端口范围**  
サーバ必须设置1つ段专用的端口范围供パッシブモード使用,例えば </span><span><span class="hljs-number">50000</span></span><span>-</span><span><span class="hljs-number">51000</span></span><span>。  
- 存在する vsftpd 真ん中,構成ファイルは通常です `/etc/vsftpd/vsftpd.conf`,追加または変更します:  
  ```conf
  pasv_min_port=</span><span><span class="hljs-number">50000</span></span><span>
  pasv_max_port=</span><span><span class="hljs-number">51000</span></span><span>
</span></span>
  • ProFTPDやPure-FTPDなどの他のFTPサーバーにも同様の構成があります。

  1. ファイアウォールポートを開く<br> パッシブモードのデータポート範囲(上記の例では50000-51000など)は、サーバーファイアウォールでリリースする必要があります。それ以外の場合、クライアントはこれらのポートに接続できないため、送信に障害が発生します。

  • たとえば、 iptablesを使用して、ルールを追加します。

     <span><span>iptables -I INPUT -p tcp --match multiport --dports 50000:51000 -j ACCEPT
    </span></span>
  • ファイアウォールまたは他のファイアウォールソフトウェアを使用する場合、対応する構成も必要です。

  1. サーバーのパブリックIPを設定します
    サーバーは通常、イントラネットにあるか、NATを使用しているため、クライアントに正しいパブリックIPアドレスを指示する必要があります。

  • vsftpdで、構成:

     <span>pasv_address=あなたのパブリックネットワークIP住所
    </span>
  • それ以外の場合、クライアントはイントラネットIPを取得し、データポートに接続できません。

  1. 接続タイムアウトと最大数の接続数<br>を構成します 時期尚早の接続切断またはサーバーリソースの不足を防ぐために、タイムアウト設定と最大接続カウントを適切に調整します。

4。PHPコードの例以下は、パッシブモードをオンにしてファイルをアップロードする簡単な例です。

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$ftp_server</span></span><span> = </span><span><span class="hljs-string">"ftp.example.com"</span></span><span>;
</span><span><span class="hljs-variable">$ftp_user</span></span><span> = </span><span><span class="hljs-string">"username"</span></span><span>;
</span><span><span class="hljs-variable">$ftp_pass</span></span><span> = </span><span><span class="hljs-string">"password"</span></span><span>;
</span><span><span class="hljs-variable">$local_file</span></span><span> = </span><span><span class="hljs-string">"/path/to/local/file.txt"</span></span><span>;
</span><span><span class="hljs-variable">$remote_file</span></span><span> = </span><span><span class="hljs-string">"file.txt"</span></span><span>;

</span><span><span class="hljs-comment">// 接続する FTP</span></span><span>
</span><span><span class="hljs-variable">$conn_id</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_connect</span></span><span>(</span><span><span class="hljs-variable">$ftp_server</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$conn_id</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"无法接続する FTP サーバ"</span></span><span>);
}

</span><span><span class="hljs-comment">// ログイン</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">ftp_login</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-variable">$ftp_user</span></span><span>, </span><span><span class="hljs-variable">$ftp_pass</span></span><span>)) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"FTP ログイン失败"</span></span><span>);
}

</span><span><span class="hljs-comment">// 開けるパッシブモード</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ftp_pasv</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);

</span><span><span class="hljs-comment">// ファイルをアップロードします</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ftp_put</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-variable">$remote_file</span></span><span>, </span><span><span class="hljs-variable">$local_file</span></span><span>, FTP_BINARY)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"正常にアップロードします"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"アップロードに失敗しました"</span></span><span>;
}

</span><span><span class="hljs-comment">// 关闭接続する</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

5。概要FTP_PASVを使用する場合、キーは、サーバー側のパッシブモードポート範囲、ファイアウォールルール、パブリックネットワークIPアドレスを正しく構成することです。それらのどれも欠落していません。そうしないと、クライアントはデータ接続を正しく確立できません。サーバーが合理的に構成され、正しいPHPコードと組み合わされている限り、ほとんどのFTPパッシブモードの接続エラーは回避できます。

この記事の説明を通して、FTPパッシブモードの構成を明確に理解しており、実際のプロジェクトでFTP_PASVをスムーズに使用して、安定した効率的なファイル転送を確保できると思います。

 <span></span>