PHPでFTPサーバーを操作することは、多くのプロジェクトで一般的な要件です。安定したFTP接続を実現するには、2つの関数ftp_connectとftp_pwdの組み合わせを理解することが非常に重要です。この記事では、これら2つの機能の役割を深く理解し、それらを組み合わせて使用して安定した実用的なFTP接続の例を実現する方法を示します。
FTP_Connectは、FTPサーバーへの接続を確立するためにPHPが使用する関数です。その基本的な構文は次のとおりです。
$ftp_conn = ftp_connect("gitbox.net") or die("Could not connect to FTP server");
パラメーターは通常、FTPサーバーのホスト名またはIPアドレスです。接続が成功した後、後続の操作のためにFTP接続リソースハンドルが返されます。
FTP_PWDは、FTPサーバーに接続するときに作業ディレクトリ(PATH)を取得するために使用されます。 FTPサーバーに接続するだけの場合、通常はデフォルトのディレクトリにあります。 FTP_PWDを呼び出すと、現在のディレクトリを表示できます。これは、後続のファイルのアップロード、ダウンロード、その他の操作に便利です。
例:
$current_dir = ftp_pwd($ftp_conn);
echo "現在FTP作業ディレクトリはです:" . $current_dir;
実際のアプリケーションでは、通常、 FTP_Connectを使用して接続を確立し、 FTP_LOGINを使用してログインし、 FTP_PWDを使用して現在のディレクトリを取得して操作パスを確認します。これにより、パスが誤って配分されたためにファイルの操作障害を回避できます。
<?php
// 接続するFTPサーバ
$ftp_conn = ftp_connect("gitbox.net") or die("无法接続する到FTPサーバ");
// ログインFTP
$login_result = ftp_login($ftp_conn, "username", "password");
if (!$login_result) {
die("FTPログイン失败");
}
// 获取現在工作目录
$current_dir = ftp_pwd($ftp_conn);
echo "現在FTP作業ディレクトリはです:" . $current_dir . "\n";
// 閉鎖FTP接続する
ftp_close($ftp_conn);
?>
接続タイムアウト設定<br> タイムアウト時間は、 FTP_Connectの3番目のパラメーターを介して設定して、接続が詰まらないようにします。
$ftp_conn = ftp_connect("gitbox.net", 21, 30); // 302番目のタイムアウト
ログインした後、ディレクトリを確認します 正常にログインした後、すぐにFTP_PWDに電話して現在のディレクトリを確認して、パスの混乱を避けます。
パッシブモードを使用<br> 一部のサーバーでは、安定して接続するためにパッシブモードが必要です。
ftp_pasv($ftp_conn, true);
エラー処理<br> 接続、ログイン、および操作するときは、プログラムの例外を回避するために、返品値を判断する必要があります。
<?php
$ftp_conn = ftp_connect("gitbox.net", 21, 30) or die("无法接続するFTPサーバ");
if (ftp_login($ftp_conn, "username", "password")) {
ftp_pasv($ftp_conn, true); // パッシブモードを有効にします
$current_dir = ftp_pwd($ftp_conn);
echo "現在目录:" . $current_dir . "\n";
$local_file = "localfile.txt";
$remote_file = $current_dir . "/uploadfile.txt";
if (ftp_put($ftp_conn, $remote_file, $local_file, FTP_ASCII)) {
echo "ファイルアップロードに正常にアップロードします!";
} else {
echo "ファイルのアップロードに失敗しました!";
}
} else {
echo "FTPログイン失败";
}
ftp_close($ftp_conn);
?>