PHPコーディング

ftp接続でファイルをアップロード&ダウンロード

2009年11月20日
読み込み権限のないファイルをコピーするには、ftpでサーバーに接続し、ダウンロードする必要があります。

それをPHPから行う方法です。cronなど自動実行と組み合わせると、別サーバーにあるファイルと同期をとるなど、色々なことが自動でできるようになります。

//ftp接続
$connection = @ftp_connect(ftpサーバーのアドレス);

//ユーザ名とパスワードでログイン
$loginResult = @ftp_login($connection, ユーザーID, パスワード);

//パッシブモードオン
@ftp_pasv($connection, true);

//ファイルをダウンロードし、サーバー(ローカル)へ保存
@ftp_get($connection, ローカルパス, リモートパス, FTP_BINARY);
//ASCIIモードで転送する場合は、【FTP_BINARY】を【FTP_ASCII】へ

//ファイルをアップロードし、サーバー(リモート)へ保存
@ftp_put($connection, リモートパス, ローカルパス, FTP_ASCII);
//ASCIIモードで転送する場合は、【FTP_ASCII】を【FTP_BINARY】へ

//いらなくなったファイルを削除
@ftp_delete($connection, 削除するファイルのパス);

//接続を閉じる
@ftp_close($connection);

ここで、ftpの転送モード、バイナリモードとASCIIモードについて。
バイナリモードの場合はまったく同じファイルとして転送しますが、テキストのASCIIモード転送の場合はOS側で異なる改行コードを自動的に修正してくれます。
ftpでファイルをアップロード、ダウンロードする場合はどちらかを選べます。

※ サーバーにPHPのftpモジュールが組み込まれていないと使えません。
  私の使っているレンタルサーバーはオプションなので、自分でphp.iniを設定しました。